單行查詢失敗時傳回預設值
執行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中文網其他相關文章!