如何合并SQL查询“NOT IN”和“IN”?

时间:2017-02-18 09:44:41

标签: sql

假设我有三个集合C1C2C3,我希望C3中的所有元素都在C1但不在C2中{1}}。

我试过了:

SELECT * 
FROM C3 
WHERE MyId IN (C1) 
  AND NOT IN (C2)

但是我收到了这个错误:

  

语法错误:在第1行第161列遇到“IN”

有什么建议吗?

由于

1 个答案:

答案 0 :(得分:2)

假设C3是一个表,而C1/C2是列表,则需要:

SELECT * FROM C3 WHERE MyId IN (C1) AND MyId NOT IN (C2)
                       \__________/     \______________/

andor合并的每个子条件必须完整,即使它是同一列。例如,

select name from people
    where gender in ('m','f')
    and age not in (1, 3, 5, 7, 9)