如果我有一个具有以下结构和数据的表:
id | user_id | created_at ------------------------- 1 | 7 | 0091942 2 | 3 | 0000014 3 | 6 | 0000890 4 | 6 | 0029249 5 | 7 | 0000049 6 | 3 | 0005440 7 | 9 | 0010108
我将使用哪种查询来获得以下结果(随后的说明):
id | user_id | created_at ------------------------- 1 | 7 | 0091942 6 | 3 | 0005440 4 | 6 | 0029249 7 | 9 | 0010108
如你看到的:
user_id
created_at
是否有一种 无需 使用子查询即可完成此操作的方法?该程序经过的关系代数术语中是否有名称?
该查询称为逐组最大值,它(至少在MySQL中)可以通过子查询实现。例如:
SELECT my_table.* FROM my_table NATURAL JOIN ( SELECT user_id, MAX(created_at) created_at FROM my_table GROUP BY user_id ) t
在sqlfiddle上看到它。