mySQL:使用 CASE 在列上进行过滤

标签 mysql sql select case where-clause

我有以下代码:

    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/

相关文章:

Mysql 大量连接时查询性能不佳

MySql where..in multiple columns

sql - 带有 ODBC SQL 查询的 Julia ReadOnlyMemoryError

mysql - 有没有办法将条件添加到 COUNT() 中?

mysql - 只选择表中重复的行

mysql - 替换多个值 - MySQL

mysql - 在 MySQL 中更新了错误的值

asp.net-mvc - 使用下拉列表过滤 MVC 中的结果

javascript - 在MySQL中选择多行的前十个条目

sql - 如何让员工列在经理的名下? SQL