高效率執行SQL左連接,預先篩選表格資料
在處理多個表時,通常需要在連接表之前先對其中一個表進行篩選。本範例涉及兩個表格:客戶表 (Customer) 和條目表 (Entry)。
目標是在執行這兩個表之間的左連接之前,先根據特定類別 'D' 篩選條目表。預期結果是:無論條目表中是否有相關記錄,都檢索客戶表中的所有記錄;同時,排除條目表中不符合類別條件的記錄。
以下SQL查詢示範如何實現這一點:
<code class="language-sql">SELECT c.Customer, c.State, e.Entry FROM Customer c LEFT JOIN Entry e ON c.Customer=e.Customer AND e.Category='D'</code>
將WHERE篩選條件移至JOIN條件中,我們可以在連接之前對條目表應用類別篩選。這可確保只有符合類別條件的條目記錄包含在連線結果中。
範例表
<code>客户表 (Customer): ╔══════════╦═══════╗ ║ Customer ║ State ║ ╠══════════╬═══════╣ ║ A ║ S ║ ║ B ║ V ║ ║ C ║ L ║ ╚══════════╩═══════╝ 条目表 (Entry): ╔══════════╦═══════╦══════════╗ ║ Customer ║ Entry ║ Category ║ ╠══════════╬═══════╬══════════╣ ║ A ║ 5575 ║ D ║ ║ A ║ 6532 ║ C ║ ║ A ║ 3215 ║ D ║ ║ A ║ 5645 ║ M ║ ║ B ║ 3331 ║ A ║ ║ B ║ 4445 ║ D ║ ╚══════════╩═══════╩══════════╝</code>
結果
<code>╔══════════╦═══════╦═══════╗ ║ Customer ║ State ║ Entry ║ ╠══════════╬═══════╬═══════╣ ║ A ║ S ║ 5575 ║ ║ A ║ S ║ 3215 ║ ║ B ║ V ║ 4445 ║ ║ C ║ L ║ NULL ║ ╚══════════╩═══════╩═══════╝</code>
總之,透過在JOIN條件中使用AND子句,我們可以在連接表之前對其進行篩選,從而根據指定的條件更精確地檢索資料。
以上是如何在 SQL 中對預過濾表執行左連線?的詳細內容。更多資訊請關注PHP中文網其他相關文章!