gpt4 book ai didi

MYSQL GROUP BY 不返回有序选择中的第一行

转载 作者:行者123 更新时间:2023-11-29 15:45:21 26 4
gpt4 key购买 nike

我在返回有序/分组查询中的某些行时遇到问题。

我试图获取表中类型 2 的最新行,因此我使用了 ORDER First GROUP Later 方法。

示例表:

id    type   field1     date (dd/mm/yyyy)
1 1 texta 01/01/2019
2 1 textb 02/01/2019
3 2 textc 01/01/2019
4 2 textd 02/01/2019
5 2 texte 03/01/2019

如果我这样做

SELECT * FROM cars WHERE type = 2 ORDER BY date DESC

它返回:

id    type    field1     date
5 2 texte 03/01/2019
4 2 textd 02/01/2019
3 2 textc 01/01/2019

如果我这样做

SELECT a.* 
FROM ( SELECT * FROM cars WHERE type = 2 ORDER BY date DESC ) a
GROUP BY a.type

我得到:

id    type    field1     date
3 2 textc 01/01/2019

GROUP BY 没有获取组的第一行吗?我怎样才能获得最新行,例如:

id    type    field1     date
5 2 texte 03/01/2019

谢谢!!!

最佳答案

首先,据我所知,您的查询应该可以正常工作。也许是评论中建议的 MySQL 版本问题

根据您的问题,解决方案应该是不使用GROUP BY找到解决方案。 ORDER BY + LIMIT 怎么样?例如:

SELECT * FROM cars WHERE type = 2 ORDER BY date DESC LIMIT 1;

在这种情况下,order by 将需要的行放在前面,限制使得只返回一行

另一种效率较低的方法是使用LEFT JOIN + NULL:

SELECT * FROM cars 
LEFT JOIN cars2 ON cars.type = cars2.type AND cars2.date > cars.date
WHERE type = 2
AND cars2.id IS NULL
LIMIT 1;

在这种方法中,不等式强制最新行不连接到另一个表按该条件过滤将提取最后一行

关于MYSQL GROUP BY 不返回有序选择中的第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57117531/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com