单行查询失败时返回默认值
在执行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中文网其他相关文章!