1

表の例:

event_id| group_id | updated_at
1 | 1 |2012-01-02
2 | 1 |2012-01-01
3 | 2 |2012-01-01
4 | 2 |2012-01-02
5 | 3 |2012-01-01

group_id でグループ化された最大日付のすべての event_id を選択する必要があります。したがって、正しい結果は次のようになります。

event_id| group_id | updated_at
1 | 1 |2012-01-02
4 | 2 |2012-01-02
5 | 3 |2012-01-01

MAX(updated_at) を選択したのと同じ行から event_id を選択できますか?

SELECT event_id, group_id, MAX(updated_at) 
FROM my_table 
GROUP BY group_id;
4

2 に答える 2

1

lc によるソリューションと同様に、次のようにすると、最新の日のレコードを取得してから、それらのレコードの 1 日あたりの event_id が最も高いレコードを取得できます。

SELECT t1.event_id, t1.group_id, t1.updated_at
FROM my_table t1
INNER JOIN
(
    SELECT group_id, MAX(updated_at) AS max_updated_at
    FROM my_table
    GROUP BY group_id
) t2 
ON t1.group_id = t2.group_id AND t1.updated_at = t2.max_updated_at
INNER JOIN
(
    SELECT group_id, updated_at, MAX(event_id) AS max_event_id
    FROM my_table
    GROUP BY group_id, updated_at
) t3 
ON t1.group_id = t3.group_id 
AND t1.event_id = t2.max_event_id
AND t3.max_updated_at = t3.updated_at
于 2013-07-17T08:49:33.390 に答える