mySQL:筛选带有 CASE 的列
mySQL: Filter on a column with CASE
我有以下代码:
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
子句中使用别名。如果您不想将查询包装在其他查询中,您总是可以将表达式从 select 列表复制到 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
我有以下代码:
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
子句中使用别名。如果您不想将查询包装在其他查询中,您总是可以将表达式从 select 列表复制到 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