我在数据库中有两个表,我希望从第一个表中选择所有id,其中该id不在第二个表的条目中。
例如:
在这种情况下,应该返回ID 333,因为333永远不会出现在Table2的ID中
那么我该如何创建一个SQL查询,以便我可以从Table1获取ID不是Table2中ID的行?
如果可以在一个查询中完成,我可以在php文件中进行更多操作。
PS:这个主题的灵感来自于这个:{{3}}
提前感谢任何帮助
答案 0 :(得分:2)
不要将ID列表存储在字符串中。那是错的。错误。错误。错误。为什么呢?
也就是说,有时候,我们会遇到其他人真正的,非常非常糟糕的决定。有办法采取。您还没有指定数据库,但在标准SQL中,您可以执行以下操作:
concat()
只有当您无法修复数据模型时,才建议将其作为解决方法。
编辑:
MySQL使用select t1.*
from table1 t1
where not exists (select 1
from table2 t2
where concat(';', replace(t2.ids, ' ', ''), ';') like concat('%;', cast(t1.id as varchar(255)), ';%');
函数。而且,您可能需要考虑意外的空间:
CMakeLists.txt