检查缺失的列值对

时间:2014-05-27 11:08:32

标签: sql-server

我有一个名为FriendRequests的表,其中包含例如Id,RequestFrom和RequestTo

具有例如

的数据
Id   RequestFrom                            RequestTo 
1    3C24B040-3CE2-46B6-950F-D76A8275505D   4C668138-BB4F-4228-9946-44DED1851C51
2    4C668138-BB4F-4228-9946-44DED1851C51   3C24B040-3CE2-46B6-950F-D76A8275505D

所以现在我想知道有多少这样的组合缺失。对于例如该表只有一行而第二行缺失。

我试过这个但没有工作

SELECT  RequestTo ,
        RequestFrom ,
        IsPending ,
        IsAccept ,
        ActedDate
FROM    FriendRequests
WHERE   RequestFrom NOT IN ( SELECT DISTINCT
                                    requestTo
                             FROM   FriendRequests )

1 个答案:

答案 0 :(得分:0)

试试这个:

SELECT  f1.RequestTo ,
        f1.RequestFrom ,
        f1.IsPending ,
        f1.IsAccept ,
        f1.ActedDate
FROM    FriendRequests f1
EXCEPT
SELECT  f1.RequestTo ,
        f1.RequestFrom ,
        f1.IsPending ,
        f1.IsAccept ,
        f1.ActedDate
FROM    FriendRequests f1
JOIN FriendRequests f2
ON f1.RequestFrom = f2.RequestTo
AND f2.RequestFrom = f1.RequestTo

编辑:这是另一种方法

SELECT  f1.RequestTo ,
        f1.RequestFrom ,
        f1.IsPending ,
        f1.IsAccept ,
        f1.ActedDate
FROM    FriendRequests f1
WHERE NOT EXISTS (SELECT * 
                  FROM FriendRequests f2
                    ON f1.RequestFrom = f2.RequestTo
                   AND f2.RequestFrom = f1.RequestTo)

它会找到所有未被接受的朋友请求。