SQL SQL查询以查找两个相关表之间的缺失行
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/3826929/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
SQL Query to find missing rows between two related tables
提问by Fazal
I have two tables:
我有两个表:
Table A
表A
- ID
- ABC_ID
- VAL
- ID
- ABC_ID
- 价值
Table B
表B
- ID
- ABC_ID
- VAL
- ID
- ABC_ID
- 价值
These two tables are directly related to each other through the ABC_ID
column.
这两个表通过ABC_ID
列直接相互关联。
I want to find all the VAL
column values in table A which are notpresent in table B for the same ABC_ID.
我想找到VAL
表 A 中所有列值,这些值在表 B 中不存在,用于相同的 ABC_ID。
回答by Larry Lustig
SELECT A.ABC_ID, A.VAL WHERE NOT EXISTS
(SELECT * FROM B WHERE B.ABC_ID = A.ABC_ID AND B.VAL = A.VAL)
or
或者
SELECT A.ABC_ID, A.VAL WHERE VAL NOT IN
(SELECT VAL FROM B WHERE B.ABC_ID = A.ABC_ID)
or
或者
SELECT A.ABC_ID, A.VAL LEFT OUTER JOIN B
ON A.ABC_ID = B.ABC_ID AND A.VAL = B.VAL WHERE B.VAL IS NULL
Please note that these queries do not require that ABC_ID be in table B at all. I think that does what you want.
请注意,这些查询根本不需要表 B 中的 ABC_ID。我认为这就是你想要的。