Rumah > pangkalan data > tutorial mysql > Mengapa Gabungan Luar Kiri Saya Mengembalikan Lebih Banyak Rekod Daripada Jadual Kiri?

Mengapa Gabungan Luar Kiri Saya Mengembalikan Lebih Banyak Rekod Daripada Jadual Kiri?

Barbara Streisand
Lepaskan: 2025-01-25 01:11:08
asal
145 orang telah melayarinya

Why Does My Left Outer Join Return More Records Than the Left Table?

Kiri luar bergabung dan kiraan baris yang tidak dijangka: melihat lebih dekat

Dalam pangkalan data SQL, gabungan luar kiri menggabungkan data dari dua jadual, menjamin kemasukan semua baris dari jadual kiri dalam set hasil. Walau bagaimanapun, salah tanggapan umum ialah output akan

selalu mempunyai bilangan baris yang sama seperti jadual kiri. Ini tidak semestinya benar.

Tingkah laku gabungan luar kiri adalah untuk memadankan setiap baris dari meja kiri dengan baris yang sepadan di meja kanan. Jika perlawanan dijumpai, data dari kedua -dua jadual digabungkan ke dalam satu baris. Secara kritikal, jika

tidak perlawanan didapati di meja yang betul untuk baris yang diberikan di meja kiri, baris meja kiri masih termasuk dalam hasilnya, tetapi dengan nilai untuk lajur dari jadual kanan . NULL

percanggahan timbul apabila satu baris di meja kiri sepadan

berbilang baris di meja kanan. Dalam kes ini, gabungan luar kiri akan menjana pelbagai baris dalam output, satu untuk setiap perlawanan di sebelah kanan, yang membawa kepada kiraan baris melebihi jadual kiri asal.

mari kita menggambarkan dengan contoh pertanyaan SQL:

<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>
Salin selepas log masuk
pertanyaan ini berhasrat untuk mendapatkan data semata -mata dari

. Walau bagaimanapun, jika SUSP.Susp_Visits dalam MemID sepadan dengan pelbagai entri dalam SUSP.Susp_Visits, hasilnya akan mengandungi pelbagai baris untuk setiap baris DATA.Dim_Member. SUSP.Susp_Visits

Untuk mengelakkan kiraan baris yang melambung ini dan dapatkan hanya data dari jadual kiri, pertanyaan yang lebih mudah adalah lebih baik:

<code class="language-sql">SELECT     
    SuspReason, SiteID
FROM
    SUSP.Susp_Visits</code>
Salin selepas log masuk
pertanyaan langsung ini dengan cekap mengambil data yang dikehendaki tanpa potensi untuk mengira perbezaan baris yang wujud dalam tingkah laku gabungan luar kiri ketika berurusan dengan hubungan satu-ke-banyak antara jadual.

Atas ialah kandungan terperinci Mengapa Gabungan Luar Kiri Saya Mengembalikan Lebih Banyak Rekod Daripada Jadual Kiri?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan