相关疑难解决方法(0)

检索每个组中的最后一条记录 - MySQL

有一个表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)

但这看起来非常低效.还有其他方法可以达到相同的效果吗?

mysql sql group-by greatest-n-per-group

887
推荐指数
17
解决办法
58万
查看次数

如何根据多行中的最大值选择单行

可能重复:
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)

我不能只按名称分组并获得每列的最大值,因为那样我最终会得到每列中最高的数字,而不是具有最高版本的特定行.我怎么设置它?

mysql sql greatest-n-per-group

15
推荐指数
2
解决办法
3万
查看次数

标签 统计

greatest-n-per-group ×2

mysql ×2

sql ×2

group-by ×1