我有一个存储过程,可以在其中查询一段时间间隔的数据。因此,我编写了要在存储过程中执行的以下查询:
SET @quer = CONCAT('INSERT INTO tmp (`time_interval`, `cnt`, `dat`, `txn_id`) (SELECT DATE_FORMAT(\'', tmpStart, '\', \'%H:%i\') as time_interval , COUNT(v.id) as cnt
, date(v.timestamp) as dat, \"', _txn_id, '\" as txn_id FROM vehicle v WHERE v.timestamp BETWEEN \'', tmpStart, '\'
AND \'', tmpEnd, '\' ', _where_clause, ' GROUP BY time_interval)')
但问题是,我希望它为没有值的时间间隔插入 0。
Actual : for 01:00 - 02:00 = 12
for 03:00 - 04:00 = 10
Expected:for 01:00 - 02:00 = 12
for 02:00 - 03:00 = 0
for 03:00 - 04:00 = 10
请有人建议我如何更改查询以获得此结果。
谢谢。
最佳答案
尝试使用coalesce函数,如果列为空,则coalesce函数将您的值设置为默认值,示例如下:
SELECT id, ..., coalesce(columnWithNulls, DefaultValue) FROM ...
关于mysql - 如果查询没有数据,获取默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31157482/