SQL:如何在具有“NOT IN”条件的“Where”子句中使用“and”和“or”

时间:2017-06-07 13:16:31

标签: sql substring where-clause notin

我有一个查询,应该让我所有用户退出特殊区域。如果我有区域,结果仍然相同

SELECT users.id AS id, SUBSTRING(users.zipcode, 1, 2) 
FROM users JOIN country ON users.country_id = country.country_id 
WHERE country.country_code NOT IN ('AD','AF','BE')
OR (country.country_code = 'FR' AND SUBSTRING(users.zipcode, 1, 2)
NOT IN (69,38,26,07,42))

id | user_zipcode | COUNTRY_CODE

1 | 38 | FR

1 | 69 | BE

我不希望所有用户都使用country_code'AD','AF','BE',但如果country_code是“FR”,我不想只使用user_zipcode为69,38,26,07,42 < / p>

1 个答案:

答案 0 :(得分:0)

排除安多拉,阿富汗,比利时和一些法国部门:

WHERE country.country_code NOT IN ('AD','AF','BE')
AND NOT (
    country.country_code = 'FR' AND
    SUBSTRING(users.zipcode, 1, 2) IN (69,38,26,07,42)
)