gpt4 book ai didi

mysql - mySQL GROUP BY 和 SELECT DISTINCT() 如何影响相同值的数据输出?

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

更新编辑:DISTINCT 或 GROUP BY 是否会在查询中任意使用其他字段来消除重复项或选择最上面的行,或以任何方式考虑 ORDER BY?

我有一个巨大的查询,我在其中使用大量连接表,我希望我可以发布整个事情,但它是专有的,所以零碎的部分就足够了,但这里有一个简化的示例 - 我正在尝试弄清楚 mySQL 在根据以下查询类型对行进行分组和输出时到底在做什么(真实情况大约是 2 页)。

版本 1 - 旨在消除 ID2 的重复记录

SELECT SQL_NO_CACHE SQL_CALC_FOUND_ROWS 
DISTINCT ID1
, ID2
, ID2_Sequence
, DATE1
, DATE2
, <SECRET GUTS OMITTED>
GROUP BY ID2
ORDER BY DATE1 DESC
*sometimes ORDER BY DATE2 DESC*

版本 2 - 旨在显示所有记录

SELECT SQL_NO_CACHE SQL_CALC_FOUND_ROWS 
DISTINCT ID1
, ID2
, ID2_Sequence
, DATE1
, DATE2
, <SECRET GUTS OMITTED>
GROUP BY ID1
ORDER BY DATE1 DESC
*sometimes ORDER BY DATE2 DESC*

还有其他几个连接是其中的一部分,但我认为这是它的要点。要解决的主要问题以及我们消除重复项的原因是存在一对多的 ID1 到 ID2 和基于 ID2 序列的另一个字段的 ID2。

首先检查数据(大约有 70 列很难确定过滤的内容),它看起来像是在消除具有较旧 DATE1 的记录,但我不相信是这种情况?

谢谢

最佳答案

group by 将折叠分组依据字段相同的所有行。 select distinctselect distinctrow 相同,并将“distinct”应用于整行。例如

field1  field2  field3
1 1 1 <--- row 1
1 1 2 <--- row 2
1 2 3 <--- row 3
1 1 1 <--- row 4, identical to row 1

然后做这些查询:

SELECT * FROM x GROUP BY field1

返回单行,因为所有行都具有相同的 field1 值

SELECT * FROM x GROUP BY field1, field2

返回 2 行,因为 field2 有两个不同的值

SELECT DISTINCT * FROM X

返回 3 行,因为第 1 行和第 4 行相同,您将得到第 1、2、3 行

关于mysql - mySQL GROUP BY 和 SELECT DISTINCT() 如何影响相同值的数据输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9806392/

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