1

テーブル内の特定の列の値によって定義されたカテゴリで、最新のタイム スタンプを選択したいテーブルがあります。

具体的には

SELECT * 
FROM   takelist 
WHERE  producer_name = 'sean' 
       AND bucket_id = '2CCEx15_1o' 

結果は

+-------------+---------------+------------+---------------------+
| takelist_id | producer_name | bucket_id  | ts                  |
+-------------+---------------+------------+---------------------+
|           1 | sean          | 2CCEx15_1o | 2013-10-07 18:29:00 |
|           4 | sean          | 2CCEx15_1o | 2013-10-07 18:33:09 |
|           5 | sean          | 2CCEx15_1o | 2013-10-07 18:33:38 |
|          27 | sean          | 2CCEx15_1o | 2013-10-07 18:37:38 |
|         212 | sean          | 2CCEx15_1o | 2013-10-14 18:36:05 |
|         236 | sean          | 2CCEx15_1o | 2013-10-21 17:59:56 |
|         237 | sean          | 2CCEx15_1o | 2013-10-21 18:00:55 |
|         281 | sean          | 2CCEx15_1o | 2013-10-29 15:58:40 |
|         287 | sean          | 2CCEx15_1o | 2013-10-29 19:24:15 |
|         330 | sean          | 2CCEx15_1o | 2013-10-31 14:39:33 |
|         615 | sean          | 2CCEx15_1o | 2013-12-16 22:46:59 |
|         616 | sean          | 2CCEx15_1o | 2013-12-16 22:54:46 |
+-------------+---------------+------------+---------------------+

選択した行に最新のタイムスタンプがある、bucket_id という名前の列の一意の値ごとに 1 つの行を選択したいと思います。

同様の質問に対する以前の回答に基づいて以下を試しましたが、何か問題があったに違いありません

SELECT takes.* FROM takelist as takes 
INNER JOIN (         
            SELECT takelist_id, max(ts) max_ts, bucket_id
            FROM takelist 
            WHERE producer_name='sean' 
            GROUP BY bucket_id
             ) latest_take
ON takes.takelist_id=latest_take.takelist_id
AND takes.ts=latest_take.max_ts 
4

2 に答える 2

0

これを試して:

SELECT t.* 
FROM takelist AS t 
INNER JOIN (SELECT MAX(ts) max_ts, bucket_id
            FROM takelist WHERE producer_name='sean' 
            GROUP BY bucket_id
           ) lt ON t.bucket_id=lt.bucket_id AND t.ts=lt.max_ts;

また

SELECT * 
FROM (SELECT * FROM takelist WHERE producer_name='sean' ORDER BY bucket_id, ts DESC) A 
GROUP BY bucket_id
于 2013-12-30T05:42:17.450 に答える