Rumah >pangkalan data >tutorial mysql >SERTAI KIRI lwn. SERTAI KANAN: Bilakah Gabungan SQL Ini Menghasilkan Keputusan Berbeza?

SERTAI KIRI lwn. SERTAI KANAN: Bilakah Gabungan SQL Ini Menghasilkan Keputusan Berbeza?

Barbara Streisand
Barbara Streisandasal
2025-01-14 15:56:46473semak imbas

LEFT JOIN vs. RIGHT JOIN: When Do These SQL Joins Produce Different Results?

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!

Kenyataan:
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