SQL LEFT JOIN
dan RIGHT JOIN
: Bilakah ia setara?
LEFT JOIN
dan RIGHT JOIN
dalam SQL menggabungkan baris daripada dua jadual berdasarkan nilai yang sepadan. Walaupun fungsinya serupa, perbezaan utama wujud.
Mari kita gambarkan:
<code class="language-sql">CREATE TABLE Table1 (id INT, Name VARCHAR(10)); CREATE TABLE Table2 (id INT, Name VARCHAR(10)); INSERT INTO Table1 (id, Name) VALUES (1, 'A'), (2, 'B'); INSERT INTO Table2 (id, Name) VALUES (1, 'A'), (2, 'B'), (3, 'C');</code>
Pertanyaan ini:
<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>
menghasilkan hasil yang sama. Kedua-duanya memadankan baris daripada Table1
dengan baris yang sepadan dalam Table2
menggunakan medan id
. LEFT JOIN
termasuk semua baris daripada Table1
, manakala RIGHT JOIN
melakukan perkara yang sama untuk Table2
.
Walau bagaimanapun, pertimbangkan ini:
<code class="language-sql">SELECT * FROM Table2 LEFT JOIN Table1 ON Table1.id = Table2.id;</code>
atau yang setaraf dengannya:
<code class="language-sql">SELECT * FROM Table1 RIGHT JOIN Table2 ON Table1.id = Table2.id;</code>
Keluaran berbeza. Ini mengembalikan semua baris daripada Table2
serta mana-mana baris yang sepadan daripada Table1
. Ini ialah "gabungan luar", di mana baris daripada satu jadual disertakan walaupun tanpa padanan di bahagian lain. Perkara utama ialah sebutan kiri atau kanan menentukan baris jadual mana yang dijamin akan disertakan sepenuhnya dalam set hasil, tanpa mengira baris yang sepadan dalam jadual lain. Oleh itu, pertukaran jadual mudah dalam pertanyaan tidak selalu menghasilkan hasil yang sama. Kebolehtukaran bergantung sepenuhnya pada data dan hasil yang diingini.
Atas ialah kandungan terperinci Bilakah Pertanyaan KIRI JOIN dan KANAN JOIN Boleh Ditukar Dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!