mysql - 如果查询没有数据,获取默认值?

标签 mysql database stored-procedures

我有一个存储过程,可以在其中查询一段时间间隔的数据。因此,我编写了要在存储过程中执行的以下查询:

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/

相关文章:

MySQL 存储过程检查表是否存在然后更改语法错误

sql - 在使用数组作为参数的函数中传递超过 100 个参数

java - 用 JPA 创建数据库?

PHP/MySQL 多对多关系——下一步在这里

sql - 索引减少读取的行数;无性能增益

asp.net-mvc - 如何在 ASP.NET MVC 中处理请求式数据库事务?

c# - 将对象列表传递给 SQL Server 存储过程并检索输出值

MySQL 解释 SERIALIZABLE 比 PostgreSQL 更轻松。这是对的吗?

java - 在 Debian 上使用 Java 连接到 MySQL

sql - 为什么 "first"或 "any"聚合函数在数据库引擎中不常用?