2015-09-24 11 views
5

下の表から最後の一意のレコードを取得しようとしています。それにはいくつかの倍数があり、それらは除外されるべきです。他の列から一意の列の最後の項目を選択してください

id topic action date 
1 10127 2 2015-09-24 15:28:30 
2 10127 4 2015-09-24 15:29:26 
3 10127 2 2015-09-24 15:30:01 
4 10127 3 2015-09-24 15:30:55 
5 10127 1 2015-09-24 16:07:25 
6 10127 5 2015-09-24 16:10:25 
7 10127 4 2015-09-24 16:29:26 

このクエリ(ここにあります)を使用するのは私のベストエフォートですが、結果は1つだけです。

SELECT MAX(action) as action,topic,date FROM ...... 
GROUP by topic 
ORDER by action DESC 

は「トピック」の「行動」に関する最新のエントリと独特としてこのリストを取得したいと思います:

id topic action date 
3 10127 1 2015-09-24 15:30:01 
4 10127 2 2015-09-24 15:30:55 
5 10127 3 2015-09-24 16:07:25 
6 10127 4 2015-09-24 16:10:25 
7 10127 5 2015-09-24 16:29:26 

は、誰かが解決策を持っている願っています! ありがとう!

+0

はい。タイムスタンプは常にユニークです。 – KJS

+0

あなたのIDが増分であるため、最後のレコードは最大IDを持ちます。正しい? – Andreas

答えて

4

サブクエリを使用して実行できます。 http://sqlfiddle.com/#!9/f7afa/23

Select * FROM (

SELECT 
    DISTINCT `topic`, `action`, `date` 
FROM 
    ForgeRock  
ORDER by date DESC, action ASC 

) as X 
    GROUP BY action 
+0

すばらしい解決策!どうもありがとうございました! – KJS

1

あなたはサブクエリを使用する必要があります:これは完全なsqlfiddleある

SELECT * 
FROM yourtable 
JOIN (
    SELECT topic, MAX(action) 
    FROM yourtable 
    GROUP BY topic 
) AS child ON (yourtable.topic = topic) AND (yourtable.action = child.action) 

サブクエリは、すべてのトピックのための最大のアクションを検索します。そのデータは、同じテーブルに対して結合するために使用されます。このテーブルを使用して、その "max'd"レコード内の他のフィールドをフェッチします。

1

申し訳ありませんが、あなたの質問を読んでください。ここで働いてクエリ:

SELECT id,topic,@action:[email protected]+1 AS ACTION,DATE 
FROM 
    (SELECT t1.id, 
      t1.topic, 
      t1.date , 
      t2.id AS dup 
    FROM tab t1 
    LEFT JOIN tab t2 ON t1.action = t2.action 
    AND t2.id > t1.id) AS t, 

    (SELECT @action:=0) AS tmp 
WHERE dup IS NULL; 

結果:

+----+-------+--------+---------------------+ 
| id | topic | ACTION | date    | 
+----+-------+--------+---------------------+ 
| 3 | 10127 |  1 | 2015-09-24 15:30:01 | 
| 4 | 10127 |  2 | 2015-09-24 15:30:55 | 
| 5 | 10127 |  3 | 2015-09-24 16:07:25 | 
| 6 | 10127 |  4 | 2015-09-24 16:10:25 | 
| 7 | 10127 |  5 | 2015-09-24 16:29:26 | 
+----+-------+--------+---------------------+ 
5 rows in set (0.00 sec) 
関連する問題