使用 IN 查詢擷取缺失資料的預設值記錄
使用IN
子句查詢特定日期範圍內的使用者線上活動時,可能會遇到IN
條件中的某些使用者ID在OnlineUsage
表中缺少對應條目的情況。 為了處理這個問題並傳回缺失資料的預設值,需要修改查詢結構。
標準查詢可能只傳回具有符合記錄的 ID 的結果。若要包含 IN
清單中的所有 ID(即使是那些沒有符合線上使用資料的 ID),請重構查詢以利用 LEFT JOIN
(或等效項)。 關鍵是將日期範圍條件從 WHERE
子句移至 JOIN
條件。
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;
此修改後的查詢使用 LEFT JOIN
確保包含所有使用者。 IFNULL
函數透過替換 SUM(OnlineUsage.Minutes)
來處理 NULL
傳回 0
(對於沒有線上使用資料的使用者)的情況。 GROUP BY
子句對於正確聚合每個使用者的 MinutesOnline
至關重要。 這種方法保證了完整的資料集,提供指定時間範圍內所有使用者的一致表示,無論他們是否有線上使用記錄。
以上是如何使用 IN 查詢來檢索具有預設值的記錄以查找缺失資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!