Rumah >pangkalan data >tutorial mysql >Adakah Sertai Pesanan Penting dalam SQL Queries, Terutamanya dengan Outer Joins?
SQL JOIN order: adakah ia penting?
Dalam SQL, susunan operasi JOIN akan mempengaruhi hasil pertanyaan, terutamanya apabila menggunakan cantuman luar.
SERTAI DALAM
Untuk cantuman dalam, satu baris dalam jadual A sepadan dengan baris dalam jadual B betul-betul berdasarkan keadaan tertentu dan susunan cantuman tidak menjejaskan keputusan. Ini kerana cantuman dalaman adalah komutatif dan bersekutu. Oleh itu, pertanyaan A dan B yang ditunjukkan di bawah akan menghasilkan keputusan yang sama:
<code class="language-sql">-- A (内连接) SELECT * FROM a INNER JOIN b ON <条件> INNER JOIN c ON <条件>; -- B (内连接) SELECT * FROM a INNER JOIN c ON <条件> INNER JOIN b ON <条件>;</code>
SERTAI LUAR
Untuk cantuman luar (KIRI, KANAN atau PENUH), susunan cantuman adalah penting. Tidak seperti cantuman dalam, cantuman luar tidak boleh ditukar ganti dan tidak boleh digabungkan.
Undang-undang Komutatif
Komutatif bermaksud a LEFT JOIN b
adalah sama dengan b LEFT JOIN a
. Walau bagaimanapun, ini tidak benar untuk sambungan luar. Contohnya, pertanyaan berikut:
<code class="language-sql">a LEFT JOIN b ON b.ab_id = a.ab_id</code>
Mengembalikan semua baris dalam jadual a dan baris yang sepadan dalam jadual b, atau NULL jika tiada padanan dalam jadual b. Pertanyaan bertentangan:
<code class="language-sql">b LEFT JOIN a ON a.ab_id = b.ab_id</code>
Mengembalikan semua baris dalam jadual b dan baris yang sepadan dalam jadual a, atau NULL jika tiada padanan dalam jadual a. Jika jadual a dan jadual b mempunyai bilangan baris yang berbeza, kedua-dua pertanyaan akan menghasilkan hasil yang berbeza.
Undang-undang Bersekutu
Hukum bersekutu bermaksud (a LEFT JOIN b) LEFT JOIN c
bersamaan dengan a LEFT JOIN (b LEFT JOIN c)
. Walau bagaimanapun, ini tidak benar untuk sambungan luar sama ada. Pertimbangkan pertanyaan setara berikut:
<code class="language-sql">a LEFT JOIN b ON b.ab_id = a.ab_id LEFT JOIN c ON c.ac_id = a.ac_id</code>
Jika syarat c.ac_id = a.ac_id
mengandungi perbandingan NULL, undang-undang persekutuan mungkin tidak berlaku. Dalam erti kata lain, jika nilai NULL terlibat dalam keadaan cantuman, susunan cantuman akan menjejaskan hasilnya.
Atas ialah kandungan terperinci Adakah Sertai Pesanan Penting dalam SQL Queries, Terutamanya dengan Outer Joins?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!