如果该数据不存在于另一个表中,如何选择数据?

时间:2015-11-20 11:16:32

标签: sql sql-server

我需要从表格中选择一组数据(TableA),但前提是它不在另一个表格中TableB)。

SELECT thisData FROM dbo.TableA WHERE thisData is not existing in dbo.TableB

我不太熟悉SQL。

3 个答案:

答案 0 :(得分:1)

你可以EXCEPT

SELECT thisData FROM dbo.TableA
except
SELECT thisData FROM dbo.TableB

或者,更通用的解决方案,NOT EXISTS

select * from dbo.TableA ta
where not exists (select 1 from dbo.TableB tb
                  where tb.thiscolumn1 = ta.thiscolumn1

                  [  and tb.thiscolumn2 = ta.thiscolumn2  etc]

                  )

答案 1 :(得分:0)

您可以使用not exists条件:

SELECT  thisData 
FROM    dbo.TableA a
WHERE   NOT EXISTS 
        (
        SELECT  *
        FROM    TableB b
        WHERE   a.thisData = b.thisData
        )

答案 2 :(得分:0)

使用左连接和NULL检查。这将只返回表b中不存在的行,并且比执行多个“选择”和“存在”更高效。

SELECT a.thisData FROM dbo.TableA a
LEFT JOIN dbo.TableB b ON b.thisData = a.thisData
WHERE b.thisData IS NULL

编辑:如果您需要比较多个列,您也可以实现

SELECT a.col1, a.col2, ... FROM dbo.TableA a
LEFT JOIN dbo.TableB b ON b.col1 = a.col1 AND b.col2 = a.col2 AND ...
WHERE b.col1 IS NULL