我有两张桌子
Table A:
ID
1
2
3
4
Table B:
ID
1
2
3
我有两个请求:
- 我想选择表 A 中表 B 没有的所有行,在本例中是第 4 行。
- 我想删除表 B 中没有的所有行。
我正在使用 SQL Server 2000。
你可以使用NOT IN
:
SELECT A.* FROM A WHERE ID NOT IN(SELECT ID FROM B)
然而,同时我更喜欢NOT EXISTS
:
SELECT A.* FROM A WHERE NOT EXISTS(SELECT 1 FROM B WHERE B.ID=A.ID)
还有其他选择,本文很好地解释了所有优点和缺点:
我应该使用 NOT IN、OUTER APPLY、LEFT OUTER JOIN、EXCEPT 或 NOT EXISTS 吗? http://www.sqlperformance.com/2012/12/t-sql-queries/left-anti-semi-join
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)