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