首頁 > 資料庫 > mysql教程 > 如何使用預設值處理 IN 查詢中缺少的記錄?

如何使用預設值處理 IN 查詢中缺少的記錄?

Linda Hamilton
發布: 2025-01-17 06:36:14
原創
806 人瀏覽過

How to Handle Missing Records in an IN Query with Default Values?

針對 IN 查詢條件擷取預設值

假設一個查詢會擷取使用者資訊及其在指定日期範圍內的線上分鐘數。它使用 IN 查詢根據用戶 ID 過濾用戶。目標是為那些沒有任何符合記錄的 ID 傳回預設值。

簡化查詢:

<code class="language-sql">SELECT users.Name, users.ID, SUM(users.Minutes) AS MinutesOnline
FROM UserTable
     LEFT JOIN OnlineUseage ON OnlineUseage.ID = UserTable.ID
WHERE OnlineUseage.Date >= '2016-01-01 00:00:00' AND OnlineUseage.Date < '2016-01-31 00:00:00'
AND users.ID IN (1,2,3,4,5);</code>
登入後複製

修改後的查詢:

為了得到所需結果,將 OnlineUseage 的條件移至 FROM 子句。這確保左連接的行為類似於內部連接,過濾掉 OnlineUseage 中沒有任何符合記錄的使用者。

<code class="language-sql">SELECT
    users.Name,
    users.ID,
    IFNULL(SUM(users.Minutes), 0) AS MinutesOnline
FROM
    users
    LEFT JOIN OnlineUseage ON
        OnlineUseage.ID = users.ID AND
        OnlineUseage.Date >= '2016-01-01 00:00:00' AND
        OnlineUseage.Date < '2016-01-31 00:00:00'
WHERE users.ID IN (1,2,3,4,5);</code>
登入後複製

現在,查詢將檢索 OnlineUseage 中具有符合記錄的用戶和沒有符合記錄的用戶,同時將 MinutesOnline 設定為那些沒有比對記錄用戶的預設值 0。

以上是如何使用預設值處理 IN 查詢中缺少的記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板