首頁 > 資料庫 > mysql教程 > 如何使用 IN 查詢來檢索具有預設值的記錄以查找缺失資料?

如何使用 IN 查詢來檢索具有預設值的記錄以查找缺失資料?

Barbara Streisand
發布: 2025-01-17 06:46:08
原創
850 人瀏覽過

How to Retrieve Records with Default Values Using IN Queries for Missing Data?

使用 IN 查詢擷取缺失資料的預設值記錄

使用IN子句查詢特定日期範圍內的使用者線上活動時,可能會遇到IN條件中的某些使用者ID在OnlineUsage表中缺少對應條目的情況。 為了處理這個問題並傳回缺失資料的預設值,需要修改查詢結構。

標準查詢可能只傳回具有符合記錄的 ID 的結果。若要包含 IN 清單中的所有 ID(即使是那些沒有符合線上使用資料的 ID),請重構查詢以利用 LEFT JOIN (或等效項)。 關鍵是將日期範圍條件從 WHERE 子句移至 JOIN 條件。

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

此修改後的查詢使用 LEFT JOIN 確保包含所有使用者。 IFNULL 函數透過替換 SUM(OnlineUsage.Minutes) 來處理 NULL 傳回 0(對於沒有線上使用資料的使用者)的情況。 GROUP BY 子句對於正確聚合每個使用者的 MinutesOnline 至關重要。 這種方法保證了完整的資料集,提供指定時間範圍內所有使用者的一致表示,無論他們是否有線上使用記錄。

以上是如何使用 IN 查詢來檢索具有預設值的記錄以查找缺失資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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