SELECT     Guid
FROM         Pub_Video
WHERE     EXISTS
                          (SELECT     Guid
                            FROM          Pub_Marking
                            WHERE      (MKGuid = Pub_Video.Guid)
                            GROUP BY Guid
                            HAVING      (COUNT(Guid) = 1))以上SQL是查询出
找出在标示表中存在1条记录的视频记录?
但是现在我想找出在标示表中存在0条的记录的话
我把(COUNT(Guid) = 1)改为(COUNT(Guid) = 0)
是不行的,但我又不想用Not Exists主查询
要怎么办呢?
也就是相当于,整条SQL只有查询的记录数的值是可变的,其他不可变
然后要实现查询:
找出在标示表中存在"0|1|2|3”条记录的视频记录?谢谢

解决方案 »

  1.   

    SELECT     Guid
    FROM         Pub_Video
    WHERE     EXISTS
                              (SELECT     Guid
                                FROM          Pub_Marking
                                WHERE      (MKGuid = Pub_Video.Guid)
                                GROUP BY Guid
                                HAVING      (COUNT(Guid) < 1))
      

  2.   

    说实在的,我感觉用Not Exists就行了后面改下用HAVING      (COUNT(Guid)>0))
      

  3.   

    "0|1|2|3”
    0可以改成<1
    1可以改成=1或者甚至使用小于2这种逻辑,当然还有其他写法,不过你又不希望用。所以该这里比较合适,另外可以使用having count(xxx) between  and 来查询范围
      

  4.   

    RE:HAVING      (COUNT(Guid) < 1)) 
    是不行的,因为好像是Exists就是必须为存在了,所以=0的也是没意义RE:说实在的,我感觉用Not Exists就行了后面改下用HAVING      (COUNT(Guid)>0)) 
    是的用Not exists是可以,但是这样我得传几个变量进去
    我只想写一条SQL,再传一个数字进去就行了
    那这条SQL不用Exists的话又要怎么来写呢?谢谢
      

  5.   

    SELECT a.*
    FROM Pub_Video a INNER JOIN (SELECT MKGUID,COUNT(GUID) [COUNT] FROM Pub_Marking GROUP BY MKGUID) b ON a.[GUID]=b.MKGUID
    WHERE b.[COUNT]=0试试
      

  6.   

    楼上的没试,但应该是可以的,
    但不好意思,我这里是添加Where的子项所以只能用
    select guid from pub_video where (????这里)
    谢谢
      

  7.   

    Pub_Video 后面就是Where
    不用再Join其他表
    他和过滤条件要写在Where里面
    谢谢
      

  8.   

    DECLARE @cnt INT
    SET @cnt = 0 --亦可传1,2,3,4......SELECT a.[guid]
    from Pub_Video a
    LEFT JOIN Pub_Marking b
    ON a.[guid] = b.[guid]
    GROUP BY a.[guid]
    HAVING (b.[guid]) = @cnt
      

  9.   

    表关系如此地简单:
    select a.guid
    from Pub_Video a 
    left join Pub_Marking b on a.guid=b.MKGuid
    group by a.guid 
    having COUNT(b.guid) in (0,3)