mysql - 如何在 MySQL 的 where 子句中使用别名?

标签 mysql sql

如何在mysql的where子句中使用别名

SELECT 
    *,
    CASE roles.rol_active
        WHEN '1' THEN 'yes'
        WHEN '0' THEN 'no'
    END AS roles_active
FROM
    roles
WHERE
    rol_is_deleted = 
 AND (rol_name LIKE '%ac%' 
  OR rol_display_name LIKE '%ac%'
  OR rol_description LIKE '%ac%'
  OR rol_active LIKE '%ac%'
  OR rol_updated_by LIKE '%ac%'
  OR rol_updated_at LIKE '%ac%')
ORDER BY rol_name asc
LIMIT 10 OFFSET 0;

最佳答案

将当前查询的一部分包装在派生表中:

select * from
(
SELECT 
    *,
    CASE roles.rol_active
        WHEN '1' THEN 'yes'
        WHEN '0' THEN 'no'
    END AS roles_active
FROM
    roles
) as dt
WHERE
    rol_is_deleted = 
 AND (rol_name LIKE '%ac%' 
  OR rol_display_name LIKE '%ac%'
  OR rol_description LIKE '%ac%'
  OR rol_active LIKE '%ac%'
  OR rol_updated_by LIKE '%ac%'
  OR rol_updated_at LIKE '%ac%')
ORDER BY rol_name asc
LIMIT 10 OFFSET 0;

您甚至可以有两个单独的 WHERE 子句。一个用于子查询中的列条件,另一个用于外部查询中的列别名条件。 IE。像这样的东西:

...
WHERE column-conditions
) as dt
WHERE column-alias-conditions
...

关于mysql - 如何在 MySQL 的 where 子句中使用别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33917159/

相关文章:

SQL:使用条件显示链接选项

php - 如何在php中的一页中使用2个数据库连接

mysql - 如何永久禁用 MySQL 8 中的列统计信息?

mysql - 多语言数据库模型人

php - 如何计算两个时间点之间的小时数?

mysql UPDATE 不指定列名

php - MYSQL 额外行重复数字

mysql - 如何使用alter table创建两个主键

MySQL 过程返回 0 行

sql - 每天从 SQL DB 中选择数据