mysql - WHERE 列 IN CASE 类型 WHEN

标签 mysql sql case

我在尝试运行下面的查询时遇到语法错误,但我想知道是否可以执行类似的查询?所以在IN里面有一个CASE表达式。以下并不是我真正的查询,因此它可能看起来有点愚蠢,但这只是示例。

SELECT * 
FROM `table` 
WHERE `category` IN 
    CASE `type` 
        WHEN 'a' THEN ('CAT1','CAT2','CAT3') 
        WHEN 'b' ('CAT4') 
        ELSE ('undefined','n/a')
    END
ORDER BY `category`

提前致谢。

最佳答案

使用OR

SELECT * 
FROM `table` 
WHERE ( `type` = 'a' and `category` IN  ('CAT1','CAT2','CAT3') )
OR ( `type` = 'b' and `category` IN  ('CAT4') )
or (`type` not in ('a','b') and `category` in ('undefined','n/a'))

关于mysql - WHERE 列 IN CASE 类型 WHEN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43932059/

相关文章:

php - 从多个表中选择数据

mysql - SQL 连接实际上是如何工作的?

mysql - 如何创建 MySQL 查询以从多个表中查找相关帖子?

sql - 或者在 Postgres 中没有按预期工作

ruby-on-rails - 如果用户登录? CASE current_user.plan_id 否则...?

mysql - 在mysql中加密密码时出错

sql - 半连接被认为是左连接还是右连接?

sql - 匿名访问azure表

mysql - sql合并成格以选择案例

mysql - 尽早脱离案件