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