首頁 > 資料庫 > mysql教程 > 為什麼我的 LEFT OUTER JOIN 傳回的行數多於左表中存在的行數?

為什麼我的 LEFT OUTER JOIN 傳回的行數多於左表中存在的行數?

Mary-Kate Olsen
發布: 2025-01-25 01:22:09
原創
1054 人瀏覽過

Why Does My LEFT OUTER JOIN Return More Rows Than Exist in the Left Table?

左外的聯接意外行為:行比左表

更多

>關於左外聯接的常見誤解是結果集將始終具有比左表的行相同或更少的行。 但是,這並不總是正確的。 在特定條件下,行的數量可以超過左表的行計數。

>

在查詢中使用「 suss.susp_visits」(左表)和「 data.dim_member」(右表)之間觀察到了這個問題。連接結果的行比「 sussp_visits」中的4935行。

>

理解左外聯合

>

左外聯接功能如下:

  • 包含所有>從左表的行。
  • >
  • >對於每個左表行,它根據聯結條件在右表中搜尋匹配行。
  • 如果找到了匹配,則包括對應的右表行。
  • >
  • 如果找不到匹配,則傳回右表的欄位傳回零值。
>

為什麼會出現多餘的行

額外的行不是透過複製左表行建立的,而是透過右表的結構來建立。 右表(“ data.dim_member”)中

多個行時出現的問題是出現的。 例如,如果「 sussp_visits」中的「 memid」對應於「 data.dim_member」中的多個「成員」值,則聯接將為該左表行產生多個輸出行,從而增加整個行計數。 solutions

避免在左外連線中的這一行充氣:

限制選擇:

從左表僅選擇欄位。 這可以保證輸出行計數不會超過左表的行計數。

    >
  • >使用內部加入:如果您只需要在兩張表之間存在匹配的地方行,則內部連接更合適。 這將消除右側多個匹配的額外行。 >

以上是為什麼我的 LEFT OUTER JOIN 傳回的行數多於左表中存在的行數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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