Walaupun Left Outer Join selalu mengembalikan semua rekod di meja kiri, pengguna dikelirukan dengan bilangan hasil yang dikembalikan oleh pertanyaan.
pertanyaan sql dengan masalah:
mendedahkan kebenaran:
Kesalahpahaman adalah bahawa diandaikan bahawa gabungan luar kiri hanya akan mengembalikan nilai null untuk baris yang tidak dipadankan di meja kiri. Malah, ia mengembalikan semua baris yang sepadan, walaupun berbilang baris di meja kanan sepadan dengan garis di meja kiri.<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>
Contoh:
Pertimbangkan jadual berikut:
ditinggalkan gabungan berdasarkan memida -berasaskan akan menghasilkan hasil berikut:
seperti yang anda lihat, baris susp_visits.suspreason diulang kerana ia sepadan dengan dua baris dalam DIM_Member.Kaedah alternatif:
**Susp_Visits** | **Dim_Member** | |
---|---|---|
MemID: 1 | MembershipNum: 1 | |
MemID: 1 | MembershipNum: 2 | |
MemID: 2 | MembershipNum: NULL |
Jika hasilnya hanya satu -satunya rolling di meja kiri, tidak ada pekerjaan luar kiri. Buat pemilihan mudah dari meja kiri:
**SuspReason** | **SiteID** | **MembershipNum** |
---|---|---|
1 | 1 | 1 |
1 | 1 | 2 |
2 | 2 | NULL |
Atas ialah kandungan terperinci LEFT OUTER JOIN Teka-teki: Mengapa Lebih Banyak Keputusan Daripada Rekod Jadual Kiri?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!