首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mySQL按DISTINCT()分组和选择DISTINCT()如何影响相同值的数据输出?

问mySQL按DISTINCT()分组和选择DISTINCT()如何影响相同值的数据输出?
EN

Stack Overflow用户
提问于 2012-03-21 14:15:24
回答 1查看 647关注 0票数 1

更新编辑:是通过任意使用查询中的其他字段来区分或分组以消除重复或选择最顶层的行,还是以任何方式考虑排序?

在我使用大量连接表的情况下,我有一个非常复杂的查询,我希望我可以发布全部内容,但是它的专有部分就足够了,但是下面是一个简单的示例--我正在试图弄清楚mySQL在根据下面这类查询进行分组和输出行时所做的事情(真正的查询大约是2页)。

版本1-设计以消除ID2的重复记录

代码语言:javascript
复制
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-设计用于显示所有记录

代码语言:javascript
复制
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和ID2s之间存在一对多的ID2。

在对数据的第一次检查中(大约有70家学院很难确定正在被过滤的是什么)它看起来像是在用旧的DATE1删除记录,但我不相信是这样的吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2012-03-21 14:21:26

group by将折叠分组字段相同的任何行。select distinct与select distinctrow相同,并将“distinct”应用于整个行。例如:

代码语言:javascript
复制
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

然后执行以下查询:

代码语言:javascript
复制
SELECT * FROM x GROUP BY field1

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

代码语言:javascript
复制
SELECT * FROM x GROUP BY field1, field2

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

代码语言:javascript
复制
SELECT DISTINCT * FROM X

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9806392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档