首頁 > 資料庫 > mysql教程 > 如何使用 IN 子句傳回 SQL 查詢中缺少 ID 的預設值?

如何使用 IN 子句傳回 SQL 查詢中缺少 ID 的預設值?

Linda Hamilton
發布: 2025-01-17 06:41:08
原創
803 人瀏覽過

How to Return Default Values for Missing IDs in an SQL Query Using IN Clause?

檢索 SQL IN 子句查詢中缺失 ID 的預設值

本文解決了一個常見的 SQL 查詢挑戰:檢索指定 ID 的數據,包括在相關表中找不到 ID 時的預設值。 此場景涉及取得某個日期範圍內的使用者活動數據,使用 IN 子句按使用者 ID 進行篩選。 然而,原始查詢忽略了在指定時間範圍內沒有活動的使用者。

問題源自於查詢的 LEFT JOIN 由於應用於連接表 (INNER JOIN) 的條件而表現得像 OnlineUseage。這可以有效地過濾掉指定日期範圍內 OnlineUseage 中不存在的 ID。

解是將日期範圍條件從 JOIN 子句重新定位到 WHERE 子句。這使得 LEFT JOIN 能夠正確運行,包括 users 表中的所有 ID。 OnlineUseage 中沒有符合條目的 ID 將會收到預設值。

這是更正後的查詢:

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

此修改後的查詢可確保 IN 子句中的所有 ID 都包含在結果中。 如果 ID 在日期範圍內的 OnlineUseage 中缺少對應條目,則 IFNULL(SUM(users.Minutes), 0)MinutesOnline 提供預設值 0。 此方法可以有效處理遺失的 ID 並傳回所需的預設結果,無論指定日期範圍的 OnlineUseage 表中是否存在 ID。

以上是如何使用 IN 子句傳回 SQL 查詢中缺少 ID 的預設值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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