Rumah > pangkalan data > tutorial mysql > Adakah Sertai Pesanan Penting dalam SQL Queries, Terutamanya dengan Outer Joins?

Adakah Sertai Pesanan Penting dalam SQL Queries, Terutamanya dengan Outer Joins?

Susan Sarandon
Lepaskan: 2025-01-17 17:37:08
asal
985 orang telah melayarinya

Does Join Order Matter in SQL Queries, Especially with 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>
Salin selepas log masuk

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

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

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

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!

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