当在WHERE子句CASE“IN”的条件?(“IN” condition at CASE WHEN

2019-09-22 11:10发布

我有一个复杂的局面。 我想写一个SQL查询,包括“情况下,当”条件的“where子句”。

就这样:

SELECT *
FROM <table>
WHERE
<Column1> in
   CASE <Column2>
      WHEN 1 THEN ('OP', 'CL') 
      WHEN 0 THEN ('RE', 'ST')
END

列1必须是“中”,而不是“=”。 因为在条件列1多重价值。 该查询返回“附近有语法错误‘’。” 错误。

你能给我什么建议吗? (对不起,我的英语不好。)

编辑:我想我误解了。 如果列2为1时,条件必须喜欢 “IN( 'OP', 'CL')” 其他column1的是2,条件必须喜欢 “IN( 'RE', 'ST')”。

Answer 1:

你并不需要一个CASE该表达式,你可以使用OR这样的:

SELECT *
FROM <table>
WHERE (Column2 = 1 AND Column1 IN ('OP', 'CL')) OR
    (Column2 = 0 AND Column1 IN ('RE', 'ST'))


Answer 2:

Select * from table where <Column1> in (Select case <Column2> when 1 then ('OP','CL') when
0 then  ('RE','ST'))


文章来源: “IN” condition at CASE WHEN on WHERE CLAUSE?