为了账号安全,请及时绑定邮箱和手机立即绑定

如何选择另一个表中没有匹配条目的行?

如何选择另一个表中没有匹配条目的行?

四季花海 2019-10-15 09:19:18
我正在对数据库应用程序进行一些维护工作,但我发现,即使一个表中的值以外键的形式使用,但表上没有外键约束。我正在尝试在这些列上添加FK约束,但是我发现,由于先前的错误已被天真纠正,因此表中已经存在大量不良数据,因此我需要查找那些行匹配另一个表,然后将其删除。我在网络上找到了一些这种查询的示例,但是它们似乎都提供了示例而不是说明,而且我不明白它们为什么起作用。有人可以向我解释如何构造一个查询,该查询返回另一个表中没有匹配项的所有行,以及它在做什么,以便我可以自己进行这些查询,而不是为混乱中的每个表运行SO 没有FK限制?
查看完整描述

3 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

SELECT id FROM table1 WHERE foreign_key_id_column NOT IN (SELECT id FROM table2)

表1有一列要向其中添加外键约束,但是foreign_key_id_column与id表2中的in 并不完全匹配。


初始选择列出了idtable1中的。这些将是我们要删除的行。

NOT INwhere语句中的子句将查询限制为仅foreign_key_id_column表2 ids 列表中未包含的行。

SELECT括号中的语句将获得id表2 中所有的列表。


查看完整回答
反对 回复 2019-10-15
  • 3 回答
  • 0 关注
  • 591 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信