首页 > 解决方案 > 选择带有多个选择的 if 函数的查询

问题描述

我有一个查询

SELECT UserName,
       IF(status=1, 'open', status) status,
       IF(status=2, 'closed', status) status,
       c_name
FROM ADMIN a
JOIN admin_course_ ad ON a.adminID=ad.fk_user_id
JOIN admin_courses ac ON ac.c_id=ad.fk_c_id

我的要求是我从表中得到 status=1,2,3,4 所以1 2 3 4我不想返回open closed pending defer所以尝试

IF(status=1, 'open', status) status,IF(status=2, 'closed', status) status

但我没有得到预期值。任何帮助将不胜感激。

标签: mysql

解决方案


您可以使用 CASE 语句。例如:

SELECT c_name,
       UserName,
       (CASE status
            WHEN 1 THEN 'open'
            WHEN 2 THEN 'closed'
            WHEN 3 THEN 'pending'
            WHEN 4 THEN 'defer'
            ELSE "undefined"
        END) AS status_title
FROM admin a
JOIN admin_course_ ad ON a.adminID=ad.fk_user_id
JOIN admin_courses ac ON ac.c_id=ad.fk_c_id

推荐阅读