使用 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中文網其他相關文章!