mysql - 如果条件为空,则添加具有默认值的行

标签 mysql mariadb

如果某些字段为空,我需要添加具有默认值的行。

想象一下下面的 SELECT 子句:

SELECT date, id, name, COALESCE(value1, -1), COALESCE(value2, -1), 
COALESCE(value3, -1) 
FROM (SELECT DATE("startDate" + INTERVAL(seq_ref.seq - 1) MONTH) AS month_ref 
FROM (SELECT seq FROM seq_1_to_36) seq_ref, table) table
WHERE...

以及以下数据集:

date        id   name       value1 value2 value3
2016-01-01  1    TEST LEFT  12     14     22
2016-01-01  1    TEST RIGHT 32     11     74
2016-02-01  1    null       -1     -1     -1
2016-03-01  1    TEST LEFT  09     66     33
2016-03-01  1    TEST RIGHT 13     41     20

好的,基本上它会返回一个日期范围内的一些数据。但如果某些月份没有数据,则返回 -1 作为值。 我需要知道是否有办法在没有数据的情况下添加两行 id 和 name 的默认值。

例如:在 2016-02-01 我应该能够为 TEST LEFT 显示一行,值 -1 和 TEST RIGHT -1 到值。

编辑:结果应该是这样的

date        id   name       value1 value2 value3
2016-01-01  1    TEST LEFT  12     14     22
2016-01-01  1    TEST RIGHT 32     11     74
2016-02-01  1    TEST LEFT  -1     -1     -1
2016-02-01  1    TEST RIGHT -1     -1     -1
2016-03-01  1    TEST LEFT  09     66     33
2016-03-01  1    TEST RIGHT 13     41     20

这可能吗?

最佳答案

您可以使用 IFNULL() 函数。 它是这样工作的:IFNULL(expression, value) 它检查表达式是否为空,如果是,则用值参数替换它 你可能会这样做:

    SELECT date, id, name, IFNULL(value1, -1), IFNULL(value2, -1), 
IFNULL(value3, -1) 
FROM (SELECT DATE("startDate" + INTERVAL(seq_ref.seq - 1) MONTH) AS month_ref 
FROM (SELECT seq FROM seq_1_to_36) seq_ref, table) table
WHERE...

希望对你有帮助

关于mysql - 如果条件为空,则添加具有默认值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50817899/

相关文章:

php - 如何使用 PHP 将文本文件(CSV)解析到 MySQL 中

java - MYSQL Connector/J 插入并获取生成的自增键

mysql - 无法通过 HaProxy 连接到 RDS

php - 显示已读和未读通知

python - MariaDb Json 支持

php - MariaDb 不支持 ANY_VALUE() 函数

mysql - 两个 LIKE 条件,但首先从一个条件中检索,然后从另一个条件中检索

sql - 分组依据/不同与总和相结合?

mysql - Jira REST API 到 MySQL 的请求

Mysql大数据表查询