我有一个表temp(a int),它存储(1),(2)和(3)。我还有另一个表temp2(int),它仅存储(1)。我想要的只是临时的值。我的尝试:-
SELECT a FROM temp WHERE a NOT IN temp2;
我收到错误
错误:“ temp2”处或附近的语法错误第1行:从不在temp2中的temp中选择一个;”。
为什么会这样?正确的方法是什么?谢谢!
答案 0 :(得分:1)
另一种选择是使用EXCEPT
select a
from temp
except
select a
from temp2;
答案 1 :(得分:1)
您已经有了很好的答案,我只想添加一个。
您也可以使用LEFT JOIN
:
SELECT temp.a
FROM temp
LEFT JOIN temp2
ON temp.a = temp2.a
WHERE temp2.a IS NULL;
答案 2 :(得分:1)
您也可以使用NOT EXISTS
:
SELECT t.*
FROM temp t
WHERE NOT EXISTS (SELECT 1 FROM temp2 t2 WHERE t2.a = t.a);
答案 3 :(得分:0)
不要像下面那样使用
SELECT a FROM temp WHERE a NOT IN ( select a from temp2 where a is not null)