Rumah >pangkalan data >tutorial mysql >Adakah JOIN DALAM Mengatasi Keputusan OUTER JOIN Sebelum ini?
Penggunaan gabungan INNER JOIN dan OUTER JOIN
Apabila melaksanakan pertanyaan gabungan berbilang jadual, susunan JOIN DALAM dan JOIN LUAR adalah penting. Ramai orang tersilap percaya bahawa menggunakan JOIN DALAM selepas OUTER JOIN akan membatalkan kesan OOTER JOIN, tetapi ini tidak benar sepenuhnya.
Peranan INNER JOIN
INNER JOIN mengalih keluar baris daripada set hasil yang tidak mempunyai baris yang sepadan dalam jadual yang dicantumkan. Jika tiada nilai NULL dalam lajur yang sepadan (contohnya, kunci utama dan pasangan kunci asing), baris yang tidak sepadan ini akan dihapuskan juga.
Potensi Masalah
Kesan OUTER JOIN akan diimbangi oleh INNER JOIN berikutnya hanya jika klausa ON INNER JOIN menentukan baris yang diperlukan dalam OUTER JOIN yang mungkin dikecualikan. Contohnya, dalam pertanyaan berikut:
<code class="language-sql">SELECT * FROM person LEFT JOIN address ON person.address_id = address.id INNER JOIN city ON address.city_id = city.id</code>
Klausa ON kedua memerlukan address.city_id bukan NULL, yang mungkin menafikan kesan LEFT JOIN. Untuk menyelesaikan isu ini, JOIN kedua hendaklah ditukar kepada LEFT OUTER JOIN.
Amalan Terbaik
Walaupun ia tidak mengubah keputusan, secara amnya disyorkan untuk meletakkan INNER JOIN sebelum OUTER JOIN dalam pertanyaan. Ini membantu meningkatkan kebolehbacaan dan memastikan bahawa sekatan yang diperlukan digunakan sebelum sekatan pilihan digunakan. Selain itu, elakkan menggunakan RIGHT OUTER JOIN apabila boleh dan gunakan LEFT OUTER JOIN sebaliknya, yang meningkatkan kejelasan dan kemudahan pelaksanaan.
Atas ialah kandungan terperinci Adakah JOIN DALAM Mengatasi Keputusan OUTER JOIN Sebelum ini?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!