SQL 查询查找两个相关表之间缺失的行

标签 sql database oracle

我有两个表:

表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/

相关文章:

mysql - 带有嵌套选择的sql插入语句

java - JavaFX2 最终会取代 Swing 吗?

python - 使用不同的ID字符串通过filter和filter_by获取相同的实例

python - Django QuerySet 用子查询注释

sql - 为什么我在 SQL Server 中看到的默认字段没有反射(reflect)在 LINQ 中

mysql - INNER JOIN 对我不起作用

python - 在 Django 用户模型中需要 first_name 和 last_name

java - 我怎样才能连接到安卓应用程序和外部数据库?

sql-server - 如何在 SQL 表中实现这种数据结构

mysql - 使用 SQL Developer 从 MySQL 表中 SELECT INTO Oracle SQL 表