mysql - 用一些字符串替换 NULL

标签 mysql

我的数据库中有一个表,如下所示:

+-------------+---------+--------+
| ProductName | Status  | Branch |
+-------------+---------+--------+
| P1          | dead    |      1 |
| P1          | dead    |      2 |
| P2          | expired |      1 |
+-------------+---------+--------+

我想将产品比较后的结果显示为:

+-------------+---------+--------+
| ProductName | Branch 1|Branch 2|
+-------------+---------+--------+
| P1          | dead    |    dead|
| P2          | expired |    OK  |
+-------------+---------+--------+

在我运行以下查询之后:

<pre>
SELECT  ProductName,
MAX(CASE 
WHEN Branch=1 
THEN Status
ELSE NULL 
END) AS 'Branch 1',
MAX(CASE 
WHEN Branch=2
THEN Status
ELSE NULL 
END) AS 'Branch 2'
FROM    MyTable
GROUP BY ProductName;

我得到的结果是:

+-------------+---------+--------+
| ProductName | Branch 1|Branch 2|
+-------------+---------+--------+
| P1          | dead    |    dead|
| P2          | expired |    NULL|  
+-------------+---------+--------+

SQLFiddle
我想用 OK 替换 NULL 但无法获得所需的结果。请指出我正确的方向。谢谢

最佳答案

使用COALESCE()转义null

SELECT  ProductName,
      COALESCE(  MAX(CASE 
            WHEN Branch=1 
            THEN Status
            ELSE NULL 
        END) ,'OK') AS 'Branch 1',
       COALESCE( MAX(CASE 
            WHEN Branch=2
            THEN Status
            ELSE NULL 
        END),'OK') AS 'Branch 2'
FROM    MyTable
GROUP BY ProductName;

DEMO

关于mysql - 用一些字符串替换 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31791735/

相关文章:

java - MySql Jdbc 连接器 - 本地化问题

mysql - 选择开始列和结束列之间的行(Unix 时间戳)

PHP/SQL 查询查找最后结果

php - php 中的 MySQLdump 导出 0 大小

mysql - 删除 Mysql Workbench 中字符串的可变部分

php - MYSQL 选择和插入

mysql - 当查询结果为空时,如何强制 MySQL 查询返回 0?

mysql - 更新触发器不适用于 json 数据类型

java - 当 CSV 文件在谷歌存储桶中并且 mysql 5.7.17 安装在云中的 RHEL 机器上时,如何使用 mysql 的加载数据 infile?

MySQL 语句 - 添加另一个条件