未找到單行時使用SQL 傳回預設值
使用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>
此查詢返回滿足指定條件的最新計劃項目。但是,如果沒有找到匹配的行(即過去 30 分鐘內沒有計劃的項目),則傳回空結果。
預設值方法
要處理這種情況並在找不到匹配行時返回預設值,可以使用多種方法:
COALESCE/IFNULL 與聚合
一種方法涉及使用COALESCE 或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 值。然後,IFNULL 或 COALESCE 函數將 NULL 值替換為預設值「default.webm」。
當找不到匹配行時,此解決方案有效地傳回預設值,從而允許應用程式處理計劃項目的缺失適當地。
以上是當沒有找到符合的行時,如何在 SQL 中傳回預設值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!