考虑到我有两张桌子。
一个是“Table1”,如下所示。

另一个表是“Table2”,如下所示。

现在我需要的是,我需要 Table1 中的所有记录,那些 ID 不在 Table2 的参考列中。
请指导我如何做到这一点。
提前致谢。
考虑到我有两张桌子。
一个是“Table1”,如下所示。

另一个表是“Table2”,如下所示。

现在我需要的是,我需要 Table1 中的所有记录,那些 ID 不在 Table2 的参考列中。
请指导我如何做到这一点。
提前致谢。
如何使用您当前的模式来做到这一点(不可能使用索引):
SELECT Table1.*
FROM Table1
WHERE NOT EXISTS
(
SELECT 1
FROM Table2
WHERE CONCAT(',', Table2.Reference, ',') LIKE CONCAT('%,', Table1.ID, ',%')
)
它的工作原理是Reference用逗号将列中的每个值完全包裹起来。你最终会,2,3,得到,7,8,9,你的样本数据。然后您可以安全地,<Table1.ID>,在该字符串中搜索。
如何真正做到:
规范化您的数据库,并摆脱那些丑陋、无用的逗号分隔列表。
将您的 table2 修复为:
编号 | 参考
------+------------
1 | 2
1 | 3
2 | 7
2 | 8
2 | 9
并添加一个 table2Names 为:
编号 | 姓名
------+---------
1 | 测试
2 | 测试 2
然后你可以简单地做:
SELECT Table1.*
FROM Table1
WHERE NOT EXISTS(SELECT 1 FROM Table2 WHERE Table2.Reference = Table1.ID)