首頁 > 資料庫 > mysql教程 > 為什麼我的 LEFT OUTER JOIN 不能與 WHERE 子句中的日期過濾器一起使用?

為什麼我的 LEFT OUTER JOIN 不能與 WHERE 子句中的日期過濾器一起使用?

Patricia Arquette
發布: 2025-01-17 14:27:10
原創
565 人瀏覽過

Why Doesn't My LEFT OUTER JOIN Work with Date Filters in the WHERE Clause?

使用日期過濾調試失敗的 LEFT OUTER JOIN

常見的 SQL 查詢挑戰涉及將 LEFT OUTER JOIN 與日期過濾器一起使用。 我們期望即使右表(SalesrepPrescriber)中沒有匹配的數據,也會傳回左表(例如 Prescriptions)中的數據。 但是,在 WHERE 子句中新增日期篩選器可能會意外地過濾掉左表中的記錄。

理解問題:

問題源自於日期範圍條件的位置。 將它們放在 WHERE 子句中會錯誤地過濾 連接後的結果,從而有效地從左表中刪除在指定日期範圍內缺少匹配條目的行。

正確的做法:

為了保持 LEFT OUTER JOIN 的完整性,日期範圍標準應合併到連接本身的 ON 子句中。這確保了過濾連接期間發生,保留左表中的所有記錄,無論日期範圍內的處方是否匹配。

修改後的查詢:

<code class="language-sql">LEFT OUTER JOIN prescriptions ON prescriber.dea_no = prescriptions.dea_no
                             AND prescriptions.filldate >= '09-01-12'
                             AND prescriptions.filldate <= '09-30-12'</code>
登入後複製

透過將日期過濾器重新定位到 ON 子句,查詢可以準確地傳回 Salesrep 表中的所有數據,包括指定時間範圍內沒有處方的銷售代表。 這正確地實現了 LEFT OUTER JOIN.

預期的行為

以上是為什麼我的 LEFT OUTER JOIN 不能與 WHERE 子句中的日期過濾器一起使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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