我有一个sql查询正在从表中检索结果,但我需要它只显示结果,如果id不在另一个表中。
实施例
$sql = "SELECT id FROM TABLE_1 WHERE id NOT IN(SELECT more_id FROM TABLE_2)
这个想法是,如果id在“more_id”列表中不存在,那么它应该显示结果。
它似乎不起作用,任何帮助将不胜感激。 我应该提到“more_id”与“id”相同,但在另一个存储其他记录的表中。
答案 0 :(得分:4)
这应该有效:
$sql = "SELECT TABLE_1.id
FROM TABLE_1
LEFT JOIN TABLE_2
ON TABLE_1.id = TABLE_2.more_id
WHERE TABLE_2.more_id IS NULL"
如果没有WHERE子句,最终会得到TABLE_1中所有项目的列表,包括TABLE_2中匹配的项目和没有项目的项目。添加WHERE子句会过滤掉匹配项。
答案 1 :(得分:0)
我最好的选择是一张表使用VARCHAR
作为ID,另一张表使用INTEGER
,CHAR
或其他无法比拟的类型。