我有以下代码:
SELECT
t1.a
t1.b
CASE WHEN t1.c = Z THEN m
WHEN t1.c = Y THEN n
ELSE p END as m_or_n_or_p
FROM t1
我可以加吗
WHERE m_or_n_or_p = m
最后以这种方式过滤我的查询,还是我必须将其全部包装在另一个 SELECT 中?
最佳答案
MySQL 不允许在 where
子句中使用别名。如果您不想将查询包装在其他查询中,您总是可以将选择列表中的表达式复制到 where
子句:
SELECT t1.a
t1.b
CASE WHEN t1.c = Z THEN m
WHEN t1.c = Y THEN n
ELSE p
END as m_or_n_or_p
FROM t1
WHERE CASE WHEN t1.c = Z THEN m
WHEN t1.c = Y THEN n
ELSE p
END = m
关于mySQL:使用 CASE 在列上进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46670128/