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
Lepaskan: 2025-01-14 15:56:46
asal
524 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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