我有两个表:
表A
- 身份证
- ABC_ID
- 值(value)
表B
- 身份证
- ABC_ID
- 值(value)
这两个表通过 ABC_ID
列直接相互关联。
我想找到表 A 中的所有 VAL
列值,这些值不存在于表 B 中相同的 ABC_ID。
最佳答案
SELECT A.ABC_ID, A.VAL FROM A WHERE NOT EXISTS
(SELECT * FROM B WHERE B.ABC_ID = A.ABC_ID AND B.VAL = A.VAL)
或
SELECT A.ABC_ID, A.VAL FROM A WHERE VAL NOT IN
(SELECT VAL FROM B WHERE B.ABC_ID = A.ABC_ID)
或
SELECT A.ABC_ID, A.VAL LEFT OUTER JOIN B
ON A.ABC_ID = B.ABC_ID AND A.VAL = B.VAL FROM A WHERE B.VAL IS NULL
请注意,这些查询根本不需要 ABC_ID 在表 B 中。我认为这可以满足您的需求。
关于SQL 查询查找两个相关表之间缺失的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3826929/