我需要一个查询,我正在尝试一些方法来实现它,但仍然无法解决我的问题。我有一个表和数据存储在一个用逗号分隔的字段中。所以数据看起来像 '120,122,145,136'
。我将此表命名为 table1
。
另一个表有 1300 行。我正在尝试获取表 1 中未包含的行。
这是我写的查询。这无法正常工作。如何获得正确的结果?
SELECT a.ddd FROM table2 a
WHERE NOT EXISTS
(SELECT id
FROM table1
WHERE data_separated_comma NOT LIKE '%a.ddd%')
我希望有人能帮助我。
最佳答案
存储逗号分隔的关联确实是一个坏主意你应该注意改变你的模式并通过使用一个连接表来规范它,它包含你的表 1 和 2 之间的关系,对于你当前的问题,你可以使用 find_in_set
SELECT a.ddd
FROM table2 a
left join table1 b
on(find_in_set(a.ddd,data_separated_comma ) > 0)
WHERE b.id is null
关于如果子查询没有结果,MySQL 应该返回行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25835490/