如何为缺失的 SQL 行返回默认值
假设您有一个活动查询从两个连接表中检索信息,show 和时间表,基于具体标准。如果查询中没有匹配的行,如何确保返回默认值而不是空结果?
一种解决方案是在查询中使用 IFNULL() 或 COALESCE() 函数。这些函数采用两个参数:
IFNULL(expression, default_value) COALESCE(expression, default_value)
表达式指的是您要检查是否为空的值,default_value 是您要在表达式为空时返回的值。
示例:
<code class="sql">SELECT IFNULL(`file`, 'default.webm') AS `file` FROM `show`, `schedule`...</code>
如果没有匹配的行,此查询将返回“default.webm”。
但是,在您的特定情况下,您仅检索单行,您可以利用聚合函数来确保在没有匹配行的情况下返回空值:
<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() 可确保在没有选择记录的情况下返回空值。随后,IFNULL() 会将空值替换为默认值,确保您的查询始终返回非空结果。
以上是使用联接时如何为不存在的 SQL 行返回默认值?的详细内容。更多信息请关注PHP中文网其他相关文章!