1

我有一个存储 (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;”。

为什么呢?正确的方法是什么?谢谢!

4

4 回答 4

8

另一种选择是使用EXCEPT

select a 
from temp
except
select a
from temp2;
于 2019-01-18T13:32:16.520 回答
3

您已经有了很好的答案,我只想添加一个。您也可以使用LEFT JOIN

SELECT temp.a
FROM temp 
LEFT JOIN temp2 
ON temp.a = temp2.a
WHERE temp2.a IS NULL;
于 2019-01-18T13:43:58.103 回答
1

您还可以使用NOT EXISTS

SELECT t.*
FROM temp t
WHERE NOT EXISTS (SELECT 1 FROM temp2 t2 WHERE t2.a = t.a);
于 2019-01-18T14:44:27.320 回答
0

不使用如下

SELECT a FROM temp WHERE a NOT IN ( select a from temp2 where a is not null)
于 2019-01-18T13:31:22.230 回答