在进行数据排重的时候,我分别使用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两次结果不一样,大家帮忙分析一下。
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两次结果不一样,大家帮忙分析一下。
select distinct
[Address]
,[Sex]
,[Job]
,[Age]
from table
只是查找Address不重复的记录,后面的Sex,Job,Age好像不能也distinct吧.===很模糊的记忆.
[Address]
,[Sex]
,[Job]
,[Age]
from table你只是对Address用了distinct,而不是对所有的字段...
select distinct
[Address]
,[Sex]
,[Job]
,[Age]
from table应该是对Address,Sex,Job,Age四个字段都起作用吧!你建一个表试试看。
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
那么按照你的第一条查询就应该有一条记录,即最后一条...
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条件
那样结果才会相同