【发布时间】:2018-11-14 19:53:22
【问题描述】:
我在数据库中有两个表,我希望从第一个表中选择所有 id,其中该 id 不在第二个表的条目中。
例如:
- Table1 包含列 (ID, Name) 和示例数据:(1, "John"), (2, "Peter"), ... , (333, "Mary"), (433, "Rosa")
- Table2 有列 (ID_not_like_Table1, IDs) 和样本数据:(123, "1;2;433"), (124, "2;433"), (125, "1;433"), (126, "1;433")
在这种情况下,应该返回 ID 333,因为 333 永远不会出现在 Table2 的 ID 中
那么如何创建 SQL 查询,以便我可以从 Table1 中获取 ID 不在 Table2 中的 ID 行?
如果可以在一个查询中完成,我可以在一个 php 文件中完成更多。
PS:这个话题的灵感来自这个:SQL query to find record with ID not in another table
提前感谢任何帮助
【问题讨论】:
-
您使用的是哪个DBMS product? “SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加tag
postgresql,oracle,sql-server,db2, ... -
(1) 修复你的数据结构。不要将 id 列表存储在分隔字符串中。那是错的。您应该使用连接表。 (2) 你需要一个数据库标签。
-
当谈到关系数据库中的表时,最好将示例数据也显示为a table - 或SQL 脚本,甚至更好的是SQL Fiddle跨度>
-
所以,我使用的是 mysql,它不是我的数据库,所以我被这个数据结构卡住了 :(