我需要从表格中选择一组数据(TableA
),但前提是它不在另一个表格中TableB
)。
SELECT thisData FROM dbo.TableA WHERE thisData is not existing in dbo.TableB
我不太熟悉SQL。
答案 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