【问题标题】:SQL I have two table which join with foreign key . I want to find out missing id from second tableSQL 我有两个用外键连接的表。我想从第二个表中找出丢失的 id
【发布时间】:2018-03-13 16:05:36
【问题描述】:

这两个表是用外键连接的。我在信息中插入了一些值,但我需要从名称表中找出哪些值没有插入到信息中。 我的意思是 find name.id 不等于 info.sid

【问题讨论】:

  • 当前结果?预期结果?
  • 这应该只是一个简单的连接,左或右,并在其中指定 ID 为 NULL 的位置(不匹配)。如果您想要任何详细的答案,请发布一些数据和预期结果(而不是图像)。另外,您使用的是哪个数据库引擎? SQL-Server 和 MySQL 是不同的东西

标签: mysql


【解决方案1】:

规范方法是反连接模式。

在 table1 中查找在 id 列中具有值但在 table2 中没有匹配行的行(即 table2 中没有与 fk_id 值匹配的行)

 SELECT t1.id
   FROM table1 t1
   LEFT
   JOIN table2 t2
     ON t2.fk_id = t1.id
  WHERE t2.fk_id IS NULL

这个查询基本上说返回 table1 中的所有行,以及 table2 中的任何匹配行,但 排除 我们在 table2 中找到匹配行的行。只剩下 table1 中没有在 table2 中匹配的行。

这只是其中一种方法的演示。还有一些其他查询模式将返回等效结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-25
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    相关资源
    最近更新 更多