Rumah > pangkalan data > tutorial mysql > Adakah JOIN DALAM Selepas OUTER JOIN Meniadakan Kesan OUTER JOIN?

Adakah JOIN DALAM Selepas OUTER JOIN Meniadakan Kesan OUTER JOIN?

DDD
Lepaskan: 2025-01-09 10:41:41
asal
434 orang telah melayarinya

Does an INNER JOIN After an OUTER JOIN Negate the OUTER JOIN's Effect?

Serbang SQL Joins: INNER JOIN dan OUTER JOINs

Adakah INNER JOIN mengikuti OUTER JOIN membatalkan kesan OUTER JOIN? Dan patutkah INNER JOINselalu mendahului OUTER JOIN dalam pertanyaan berbilang penyertaan?

Jawapannya bernuansa. INNER JOIN berikutnya hanya akan menafikan OUTER JOIN jika klausa ONnya memerlukan kehadiran lajur yang boleh menjadi NULL disebabkan oleh OUTER JOIN. Hanya menyusun semula cantuman tidak akan menyelesaikannya; anda perlu menukar INNER JOIN kepada OUTER JOIN yang sesuai.

Mari kita gambarkan:

Contoh 1 (Susun Semula Tidak Penting):

<code class="language-sql">SELECT *
FROM person
LEFT JOIN address
  ON person.address_id = address.id
INNER JOIN email
  ON person.email_id = email.id</code>
Salin selepas log masuk

Di sini, menyusun semula gabungan tidak akan mengubah keputusan.

Contoh 2 (Perkara Susunan Semula):

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

Klausa ON kedua memerlukan bukan-NULL address.city_id. Ini mengalahkan LEFT OUTER JOIN, menapis person rekod tanpa padanan city melalui address. Untuk membetulkan ini, gantikan INNER JOIN dengan LEFT OUTER JOIN.

Amalan Terbaik:

Walaupun tidak wajib, secara amnya disyorkan untuk meletakkan INNER JOINs sebelum OUTER JOINs. Ini meningkatkan kebolehbacaan dan menjelaskan syarat penapisan penting pertanyaan. Tambahan pula, RIGHT OUTER JOINs selalunya kurang diutamakan dan biasanya boleh ditulis semula menggunakan LEFT OUTER JOINs untuk kejelasan dan kebolehselenggaraan yang lebih baik.

Atas ialah kandungan terperinci Adakah JOIN DALAM Selepas OUTER JOIN Meniadakan Kesan OUTER JOIN?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan