改为
SELECT *
FROM AirInformation as t1
WHERE EXISTS
          (SELECT hawb, COUNT(*) AS num
         FROM airinformation AS t2
         where t1.hawb = t2.hawb   --加入
         GROUP BY hawb
         HAVING COUNT(*) > 1)

解决方案 »

  1.   

    SELECT *
    FROM AirInformation as t1
    WHERE EXISTS
              (SELECT hawb, COUNT(*) AS num
             FROM airinformation AS t2
             GROUP BY hawb
             HAVING COUNT(*) > 1)!=
    select * from airinformation 
    where hawb in (SELECT hawb, COUNT(*) AS num
             FROM airinformation AS t2
             GROUP BY hawb
             HAVING COUNT(*) > 1) a
      

  2.   

    可以这么简写。
    SELECT *
    FROM AirInformation as t1
    WHERE EXISTS
              (SELECT * FROM airinformation Where hawb=t1.hawb HAVING COUNT(*) > 1)
      

  3.   

    wudan8057((五一到哪儿去玩!)) :
    一句惊醒梦中人,可怜我的66分啊:)
    谢谢了.
    libin_ftsafe(子陌红尘) :
    IN 只能跟踪一个字段,hawb,count(*)算两个字段了,会包错了:)
      

  4.   

    下面的语句所实现的功能为,一旦表中存在hawb字段重复的数据,就把表中所有的数据都返回出来:
    --------------------------------------------------------
    SELECT 
        *
    FROM 
        AirInformation as t1
    WHERE 
        EXISTS
            (SELECT 
                 hawb, COUNT(*) AS num
             FROM 
                 airinformation AS t2
             GROUP BY 
                 hawb
             HAVING COUNT(*) > 1)
             
    楼主用视图实现的查询语句可以近似于下面的语句:
    --------------------------------------------------------
    SELECT 
        a.*
    FROM 
        AirInformation as a
    WHERE 
        a.hawb in
            (SELECT 
                 hawb
             FROM 
                 airinformation
             where 
                 hawb = a.hawb
             GROUP BY 
                 hawb
             HAVING COUNT(*) > 1)正确且优化过的语句如下:
    --------------------------------------------------------
    SELECT 
        a.*
    FROM 
        AirInformation as a
    WHERE 
        EXISTS
            (SELECT 
                 1
             FROM 
                 airinformation
             where 
                 hawb = a.hawb
             GROUP BY 
                 hawb
             HAVING COUNT(*) > 1)
      

  5.   

    有道理,count(*)可以不写在select 后面
    如果我想删除hawb重复的记录,并保留重复hawb中的一条,如何去做?
      

  6.   

    如果有ID字段
    Delete A from AirInformation A Where Exists(Select * from AirInformation Where hawb =A.hawb  And ID<A.ID))没有ID字段Alter Table AirInformation Add  ID Int Identity(1,1)
    Delete A from AirInformation A Where Exists(Select * from AirInformation Where hawb =A.hawb  And ID<A.ID))
    Alter Table AirInformation Drop Column ID