如何从不存在id的子查询中获取

时间:2009-11-24 02:39:38

标签: mysql

我有一个sql查询正在从表中检索结果,但我需要它只显示结果,如果id不在另一个表中。

实施例

  

$sql = "SELECT id FROM TABLE_1 WHERE id NOT IN(SELECT more_id FROM TABLE_2)

这个想法是,如果id在“more_id”列表中不存在,那么它应该显示结果。

它似乎不起作用,任何帮助将不胜感激。 我应该提到“more_id”与“id”相同,但在另一个存储其他记录的表中。

2 个答案:

答案 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,另一张表使用INTEGERCHAR或其他无法比拟的类型。