首頁 > 資料庫 > mysql教程 > 單行SQL查詢失敗時如何傳回預設值?

單行SQL查詢失敗時如何傳回預設值?

Barbara Streisand
發布: 2024-10-30 03:31:28
原創
938 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板