Rumah >pangkalan data >tutorial mysql >Mengapa SQL Saya LEFT OUTER JOIN Mengembalikan Lebih Banyak Baris Daripada Jadual Kiri?
Memahami SQL Kiri Luar Join: Mengapa lebih banyak baris daripada meja kiri?
Kesalahpahaman umum tentang adalah bahawa ia sentiasa mengembalikan bilangan baris yang tepat dari meja kiri. Walaupun ia LEFT OUTER JOIN
termasuk semua baris dari meja kiri, ia sebenarnya boleh menghasilkan lebih banyak baris jika terdapat pertandingan pendua di jadual yang betul.
Pertimbangkan pertanyaan ini:
<code class="language-sql">SELECT SUSP.Susp_Visits.SuspReason, SUSP.Susp_Visits.SiteID FROM SUSP.Susp_Visits LEFT OUTER JOIN DATA.Dim_Member ON SUSP.Susp_Visits.MemID = DATA.Dim_Member.MembershipNum</code>Pertanyaan ini bertujuan untuk menyertai
(jadual kiri) dengan Susp_Visits
(jadual kanan). Secara intuitif, seseorang mungkin mengharapkan maksimum 4935 baris (dengan mengandaikan bahawa kiraan Dim_Member
). Walau bagaimanapun, hasil sebenar mungkin lebih besar. Susp_Visits
mencipta baris dalam hasil yang ditetapkan untuk LEFT OUTER JOIN
setiap sepadan antara jadual kiri dan kanan. Jika satu baris dalam sepadan dengan pelbagai baris dalam Susp_Visits
, ia akan diduplikasi dalam output, menghasilkan lebih banyak baris daripada yang dijangka pada awalnya. Dim_Member
Oleh itu, kiraan baris yang lebih besar daripada yang dijangkakan selepas
untuk menangani ini: LEFT OUTER JOIN
hanya memerlukan data jadual kiri?
SELECT
Menghapuskan pendua? DISTINCT
SELECT
SELECT DISTINCT SUSP.Susp_Visits.SuspReason, SUSP.Susp_Visits.SiteID ...
Ini menjelaskan tingkah laku Atas ialah kandungan terperinci Mengapa SQL Saya LEFT OUTER JOIN Mengembalikan Lebih Banyak Baris Daripada Jadual Kiri?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!