SQL在同一个表中搜索缺少值的记录

时间:2013-06-03 00:54:39

标签: sql sqlanywhere

我有一个表(t1),其中有多行状态用于不同的引用,一列是ReferenceID,另一列是StatusID。

t1.ReferenceID - t1.StatusID

A1 - 1
A1 - 2
A1 - 3
A1 - 4
A2 - 1
A2 - 3
A3 - 1
A3 - 3
A4 - 1
A4 - 4
A5 - 2
A5 - 3

我有第二个表(t2),它是所有可用StatusID的列表

t2.StatusID

1
2
3
4个

我需要能够从存在StatusID'1'的t1中提取ReferenceID列表,但是它缺少表2中的一个或多个其他StatusID。

即。使用上面的内容,将返回以下referenceID:

A2
A3
A4

1 个答案:

答案 0 :(得分:0)

不要知道这是否适用于SQLAnywhere

SELECT  DISTINCT r.ReferenceID
FROM    (SELECT ReferenceID FROM TableName WHERE StatusID = 1 GROUP BY ReferenceID) r
        CROSS JOIN (SELECT StatusID FROM TableName GROUP BY StatusID) d
        LEFT JOIN TableName a
            ON  d.StatusID = a.StatusID AND
                r.ReferenceID = a.ReferenceID
WHERE   a.StatusID IS NULL
ORDER   BY r.ReferenceID