我需要编写一个查询,返回满足特定条件的所有值的总和,但是如果找不到行,查询需要返回0,而不是null.例如:

tab    
+---------------+-----+
| descr         | num |
+---------------+-----+
| hello there   | 5   |
| hi there      | 10  |
| hello         | 10  |
| hi there!     | 15  |
+---------------+-----+

此查询:

SELECT sum(num) AS val FROM tab WHERE descr LIKE "%hello%";

应该而且确实返回15.然而:

SELECT sum(num) AS val FROM tab WHERE descr LIKE "%greetings%";

应该返回0,但确实返回null.

有人能解释一下这是否可能吗?

推荐答案

怎么样:

SELECT COALESCE(sum(num), 0) AS val FROM tab WHERE descr LIKE "%greetings%";

COALESCE函数基本上表示"返回第一个参数,除非它为null,在这种情况下返回第二个参数"——在这些情况下,它非常方便.

Mysql相关问答推荐

如何有效地计算共同的朋友/追随者?

如何将MySQL与AS&Quot;语法一起用于存储过程返回的表?

使用MySQL工作台导出具有数据的数据库表并导入到其字段具有不同数据类型的同一表中

"Shelf服务器容器访问MySQL Docker容器时出现SocketException异常"

无法从mysql数据库获取数据

即使在某些表中不匹配,如何从 MySQL 中的多个表中 Select 所有记录

获取 TEXT 类型行的百分比

如何根据 R 中的价格范围将数据从一列复制到新列?

从 mysql RDS 导出数据以导入 questDb

如何 Select 具有最新的 2 个日期字段的行?

MySQL 中的 LATERAL 语法 - 是否只是说左表首先执行以便下一个可以引用它?

如何从将分钟、天、月和年存储在不同列中的表中查询数据

查询以从约会表中获取可用空档

如何显示患者预约中的专业人员姓名?

在 MySQL 中为多列创建索引以进行查询优化

获取Count(*)占GROUP BY中所有项目数的百分比

Amazon RDS Aurora 与 RDS MySQL 与 EC2 上的 MySQL?

使用 PHP 和 MySQL 存储和显示 unicode 字符串 (हिन्दी)

如何让mysql自动启动? (仅限 linux-cli)

在 MySQL 中仅 Select 仅包含字母数字字符的行