在进行数据排重的时候,我分别使用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两次结果不一样,大家帮忙分析一下。

解决方案 »

  1.   

    如果没记错.
    select distinct
           [Address]
          ,[Sex]
          ,[Job]
          ,[Age]
          from table
    只是查找Address不重复的记录,后面的Sex,Job,Age好像不能也distinct吧.===很模糊的记忆.
      

  2.   

    TO:select distinct
           [Address]
          ,[Sex]
          ,[Job]
          ,[Age]
          from table你只是对Address用了distinct,而不是对所有的字段...
      

  3.   

    thanks!楼上的两位兄弟,好像不对吧。
    select distinct
           [Address]
          ,[Sex]
          ,[Job]
          ,[Age]
          from table应该是对Address,Sex,Job,Age四个字段都起作用吧!你建一个表试试看。
      

  4.   

    看了下你写的语句,都没问题,但两个结果肯定是不会相同的...比如你一个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
    那么按照你的第一条查询就应该有一条记录,即最后一条...
      

  5.   

    在进行数据排重的时候,我分别使用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条件
    那样结果才会相同