有一个表messages包含如下所示的数据:
Id Name Other_Columns
-------------------------
1 A A_data_1
2 A A_data_2
3 A A_data_3
4 B B_data_1
5 B B_data_2
6 C C_data_1
Run Code Online (Sandbox Code Playgroud)
如果我运行查询select * from messages group by name,我会得到如下结果:
1 A A_data_1
4 B B_data_1
6 C C_data_1
Run Code Online (Sandbox Code Playgroud)
什么查询将返回以下结果?
3 A A_data_3
5 B B_data_2
6 C C_data_1
Run Code Online (Sandbox Code Playgroud)
也就是说,应返回每组中的最后一条记录.
目前,这是我使用的查询:
SELECT
*
FROM (SELECT
*
FROM messages
ORDER BY id DESC) AS x
GROUP BY name
Run Code Online (Sandbox Code Playgroud)
但这看起来非常低效.还有其他方法可以达到相同的效果吗?
可能重复:
SQL:查找每组的最大记录数
我有一个有四列的表格如下:
name major minor revision
p1 0 4 3
p1 1 0 0
p1 1 1 4
p2 1 1 1
p2 2 5 0
p3 3 4 4
Run Code Online (Sandbox Code Playgroud)
这基本上是包含每个程序版本记录的ca表.我想做一个选择以获取所有程序及其最新版本,因此结果将如下所示:
name major minor revision
p1 1 1 4
p2 2 5 0
p3 3 4 4
Run Code Online (Sandbox Code Playgroud)
我不能只按名称分组并获得每列的最大值,因为那样我最终会得到每列中最高的数字,而不是具有最高版本的特定行.我怎么设置它?