关于distinct,group by 查询结果不一样的问题

coso 2006-12-04 11:07:53
在进行数据排重的时候,我分别使用distinct和group by语句进行排重,可是查询的结果确不一样,希望高手们分析一下原因何在。语句如下所示:

利用group by查询不重复的记录
SELECT COUNT(*) AS '重复次数'
,[Address]
,[Sex]
,[Job]
,[Age]
FROM table
group by
[Address]
,[Sex]
,[Job]
,[Age]
having count(*)<=1


利用distinct查询不重复的记录
select distinct
[Address]
,[Sex]
,[Job]
,[Age]
from table

两次结果不一样,大家帮忙分析一下。
...全文
823 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjmotion 2006-12-04
  • 打赏
  • 举报
回复
如果没记错.
select distinct
[Address]
,[Sex]
,[Job]
,[Age]
from table
只是查找Address不重复的记录,后面的Sex,Job,Age好像不能也distinct吧.

===很模糊的记忆.
coso 2006-12-04
  • 打赏
  • 举报
回复
up
zhtghl2008 2006-12-04
  • 打赏
  • 举报
回复
在进行数据排重的时候,我分别使用distinct和group by语句进行排重,可是查询的结果确不一样,希望高手们分析一下原因何在。语句如下所示:

利用group by查询不重复的记录
SELECT COUNT(*) AS '重复次数'
,[Address]
,[Sex]
,[Job]
,[Age]
FROM table
group by
[Address]
,[Sex]
,[Job]
,[Age]
having count(*)<=1


利用distinct查询不重复的记录
select distinct
[Address]
,[Sex]
,[Job]
,[Age]
from table

两次结果不一样,大家帮忙分析一下。
-------------------------------------------------
lz楼主把
SELECT COUNT(*) AS '重复次数'
,[Address]
,[Sex]
,[Job]
,[Age]
FROM table
group by
[Address]
,[Sex]
,[Job]
,[Age]
having count(*)<=1
改成:
SELECT
,[Address]
,[Sex]
,[Job]
,[Age]
FROM table
group by
[Address]
,[Sex]
,[Job]
,[Age]
即去掉having条件
那样结果才会相同
liujia_0421 2006-12-04
  • 打赏
  • 举报
回复
看了下你写的语句,都没问题,但两个结果肯定是不会相同的...

比如你一个student表,两个字段,sno,snam,有以下几条记录
111 liujia
111 liujia
111 liujia
222 xiaoming
222 xiaoming

按照你的第一个查询,应该是没有记录

按照你的第二个查询,应该是有两条记录...

对吧...

其实道理很简单,你的第一个,是先分组,然后再找组中记录个数为1的,那么对于我举的这个例子来说,就是两个组:
第一个组:
111 liujia
111 liujia
111 liujia
第二个组:
222 xiaoming
222 xiaoming
很显然两个组的记录个数都不是1,所以根据你的查询语句肯定返回为空...

如果变一下,增加一条记录,即:
111 liujia
111 liujia
111 liujia
222 xiaoming
222 xiaoming
333 haha
那么按照你的第一条查询就应该有一条记录,即最后一条...
liujia_0421 2006-12-04
  • 打赏
  • 举报
回复
晕,确实如楼主所说...

不好意思...
coso 2006-12-04
  • 打赏
  • 举报
回复
thanks!

楼上的两位兄弟,好像不对吧。
select distinct
[Address]
,[Sex]
,[Job]
,[Age]
from table

应该是对Address,Sex,Job,Age四个字段都起作用吧!你建一个表试试看。
liujia_0421 2006-12-04
  • 打赏
  • 举报
回复
TO:select distinct
[Address]
,[Sex]
,[Job]
,[Age]
from table

你只是对Address用了distinct,而不是对所有的字段...

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧