gpt4 book ai didi

mysql - Group By 子句不显示相同的行值?

转载 作者:行者123 更新时间:2023-11-29 00:15:51 25 4
gpt4 key购买 nike

我有包含以下列和数据的表格

filename1       filename2       hd
S5000L00.dat S5111L01.dat 0.46
S5111L00.dat S5000L01.dat 0.46
S5001L00.dat S5002L01.dat 0.47
S5002L00.dat S5001L01.dat 0.47
S5003L00.dat S5002L01.dat 0.38
S5002L00.dat S5003L01.dat 0.38
S5000L00.dat S5000L01.dat 0.21*
S5002L00.dat S5002L01.dat 0.42
S5002L01.dat S5000L00.dat 0.42
S5001L00.dat S5000L03.dat 0.24

现在我想按filename1分组,查看每个文件的最小hd

当我运行以下查询时

Select filename1, filename2, min(hd) as hd 
from data group by filename1
order by hd asc;

我得到以下结果

filename1       filename2       hd
S5000L00.dat S5111L01.dat 0.21*
S5001L00.dat S5002L01.dat 0.24
S5003L00.dat S5002L01.dat 0.38
S5002L00.dat S5001L01.dat 0.38
S5002L01.dat S5000L00.dat 0.42
S5111L00.dat S5000L01.dat 0.46

带星号的行是问题所在。在表中,filename2 是 S5000L01.dat,但在结果集中,filname2 是 S5111L01.dat。我想要相同的文件名,但无法形成查询。

谢谢

最佳答案

使用JOIN:

SELECT
g.filename1,
data.filename2,
g.hd
FROM
data
INNER JOIN
(SELECT
filename1,
min(hd) AS hd
FROM
data
GROUP BY
filename1) AS g
ON data.filename1=g.filename1
AND data.hd=g.hd
ORDER BY g.hd ASC

您的查询不起作用的原因:您依赖于 MySQL GROUP BY extension .此扩展允许将非分组列与分组条件混合,但服务器可以自由选择任何行。这就是为什么不能保证会选择所需的 filename2 的原因。事实上,您的原始查询在普通 SQL 中无效,它是 MySQL 的功能 - 但我强烈建议您不要依赖它。

关于mysql - Group By 子句不显示相同的行值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23006218/

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