”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 单行SQL查询失败时如何返回默认值?

单行SQL查询失败时如何返回默认值?

发布于2024-11-08
浏览:608

How to Return Default Values When Single Row SQL Queries Fail?

单行查询失败时返回默认值

在执行SQL查询获取特定数据时,经常会遇到没有对应行的情况存在。为了避免返回空结果,您可能需要提供默认值。

考虑以下 SQL 语句,该语句检索流的下一个计划项目:

SELECT `file`
FROM `show`, `schedule` 
WHERE `channel` = 1
  AND `start_time` <= UNIX_TIMESTAMP()
  AND `start_time` > UNIX_TIMESTAMP()-1800
  AND `show`.`id` = `schedule`.`file` 
ORDER BY `start_time`
DESC LIMIT 1

如果没有找到匹配的行,则该查询将返回空结果。但是,为了确保在没有计划项目的情况下在流上播放某些内容,您可以返回默认值。

实现此目的的一种方法是使用 IFNULL 或 COALESCE 函数。通过将原始查询包装在这些函数中,您可以指定在未找到行时将返回的默认值:

SELECT COALESCE(`file`, 'default.webm')
FROM `show`, `schedule` ...
SELECT IFNULL(`file`, 'default.webm')
FROM `show`, `schedule` ...

但是,当找不到行时,这些尝试仍然会导致空结果。为了解决这个问题,更有效的技术是使用像 MIN 这样的聚合函数和 IFNULL:

SELECT IFNULL(MIN(`file`), 'default.webm') `file` 
  FROM `show`, `schedule` 
 WHERE `channel` = 1 AND `start_time` <= UNIX_TIMESTAMP()
   AND `start_time` > UNIX_TIMESTAMP()-1800 AND `show`.`id` = `schedule`.`file` 
 ORDER BY `start_time` DESC LIMIT 1

通过使用聚合函数 MIN,可以确保在没有选择任何记录的情况下得到 NULL 结果。然后,该 NULL 值将替换为 IFNULL 提供的默认值。

最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3