【问题标题】:CASE MySQL - SELECT as value案例 MySQL - 选择作为值
【发布时间】:2014-04-28 00:49:27
【问题描述】:

我尝试使用 CASE 创建 SQL 查询,如果字段不为空,我想从嵌套的 SELECT 中获取值,否则我想我选择的字段 = '-'。如果该字段为空,那么它可以工作,但如果不是,那么我会得到空值而不是嵌套查询的结果。

这是我的代码:

SELECT
    id,
    CASE role
        WHEN 0 THEN \'Handlowiec\'
        WHEN 1 THEN \'Kierownik\'
        WHEN 2 THEN \'Administrator\'
    END AS role,
    name,
    email,
    CASE manager
        WHEN manager IS NULL THEN \'-\'
        ELSE (SELECT name FROM User a WHERE id = manager)
    END AS manager
FROM User ' . $where . ' ORDER BY name

如果字段“manager”为空,我想获取经理的姓名或“-”。

【问题讨论】:

    标签: mysql sql case nested-queries


    【解决方案1】:

    这可以通过连接而不是嵌套查询来完成:

    SELECT
        u.id AS id
        CASE u.role
            WHEN 0 THEN \'Handlowiec\'
            WHEN 1 THEN \'Kierownik\'
            WHEN 2 THEN \'Administrator\'
        END AS role,
        u.name AS name,
        u.email AS email,
        COALESCE (m.name, '-') AS manager
    FROM User u
    LEFT OUTER JOIN User m ON u.manager = m.id ' . $where . ' ORDER BY name
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-08
      • 2012-10-20
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多