Rumah >pangkalan data >tutorial mysql >SERTAI KIRI lwn. SERTAI KANAN: Bilakah Gabungan SQL Ini Menghasilkan Keputusan Berbeza?
Memahami LEFT JOIN dan RIGHT JOIN dalam SQL: kehalusan perhubungan jadual
Pengendali "JOIN" SQL menyediakan mekanisme yang berkuasa apabila menggabungkan data daripada berbilang jadual. "LEFT JOIN" dan "RIGHT JOIN" ialah dua variasi dalam sintaks JOIN. Walaupun kelihatan intuitif bahawa kedua-dua arahan ini harus menghasilkan hasil yang sama, pandangan yang lebih dekat mendedahkan perbezaan halus antara mereka.
Mari kita gambarkan perbezaan ini dengan dua contoh jadual:
<code class="language-sql">CREATE TABLE Table1 (id INT, Name VARCHAR(10)); CREATE TABLE Table2 (id INT, Name VARCHAR(10));</code>
Sekarang, mari isi jadual ini dengan data:
Jadual1
Id | Name |
---|---|
1 | A |
2 | B |
Jadual2
Id | Name |
---|---|
1 | A |
2 | B |
3 | C |
Jika kita melaksanakan pernyataan SQL berikut:
<code class="language-sql">SELECT * FROM Table1 LEFT JOIN Table2 ON Table1.id = Table2.id; SELECT * FROM Table2 RIGHT JOIN Table1 ON Table1.id = Table2.id;</code>
Kami akan mendapat hasil yang sama kerana kedua-dua pertanyaan melakukan "LEFT JOIN" yang memberi keutamaan kepada baris dalam jadual kiri (Jadual1). Oleh itu, semua baris daripada Jadual1 disertakan dalam output, manakala baris daripada Jadual2 digabungkan hanya jika mereka mempunyai id yang sepadan dalam Jadual1.
Sekarang, mari kita terokai variasi ketiga: "Jadual2 KIRI SERTAI Jadual1". Dengan menukar susunan jadual dalam pernyataan JOIN, kami melakukan "RIGHT JOIN" yang memberi keutamaan kepada baris dalam jadual kanan (Jadual2).
<code class="language-sql">SELECT * FROM Table2 LEFT JOIN Table1 ON Table1.id = Table2.id;</code>
Pertanyaan ini akan mengembalikan semua baris dalam Jadual2, malah baris dengan id 3 dan tiada id yang sepadan dalam Jadual1. Selain itu, sebarang baris yang sepadan dalam Jadual1 juga akan disertakan.
Jadi, "LEFT JOIN" dan "RIGHT JOIN" boleh ditukar ganti apabila jadual kiri mengandungi semua id yang sepadan, namun, apabila jadual kanan mengandungi id yang tidak sepadan, keputusannya akan berbeza . "LEFT JOIN" mengutamakan jadual kiri, dan "RIGHT JOIN" mengutamakan jadual kanan, memastikan semua baris daripada jadual yang diutamakan disertakan dalam output.
Atas ialah kandungan terperinci SERTAI KIRI lwn. SERTAI KANAN: Bilakah Gabungan SQL Ini Menghasilkan Keputusan Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!