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

Barbara Streisand
发布: 2024-10-30 03:31:28
原创
891 人浏览过

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

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

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

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

<code class="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</code>
登录后复制

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

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

<code class="sql">SELECT COALESCE(`file`, 'default.webm')
FROM `show`, `schedule` ...</code>
登录后复制
<code class="sql">SELECT IFNULL(`file`, 'default.webm')
FROM `show`, `schedule` ...</code>
登录后复制

但是,当没有找到任何行时,这些尝试仍将导致空结果。找到行。为了解决这个问题,更有效的技术是使用 MIN 之类的聚合函数和 IFNULL:

<code class="sql">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</code>
登录后复制

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

以上是单行SQL查询失败时如何返回默认值?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板