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

8yparm6h  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(372)

如果某个字段为空,我需要添加具有默认值的行。
想象一下下面的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的默认值。
例如:on 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

有可能吗?

5lhxktic

5lhxktic1#

可以使用ifnull()函数。它的工作原理是这样的:ifnull(expression,value),它检查expression是否为null,如果为null,它将用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...

希望这有帮助

相关问题