Rumah > pangkalan data > tutorial mysql > SQL JOINs: WHERE vs. ON: Bilakah Mereka Berbeza dalam Hasil Penapisan?

SQL JOINs: WHERE vs. ON: Bilakah Mereka Berbeza dalam Hasil Penapisan?

Linda Hamilton
Lepaskan: 2025-01-23 03:06:13
asal
454 orang telah melayarinya

SQL JOINs: WHERE vs. ON: When Do They Differ in Filtering Results?

SQL JOIN: Perbezaan Klausa WHERE dan ON dalam Penapisan Data

Klausa

SQL WHERE dan ON kerap digunakan dalam cantuman, tetapi ia melaksanakan fungsi penapisan yang berbeza. Memahami perbezaan ini adalah penting untuk reka bentuk pertanyaan yang cekap.

Fasal WHERE: Penapisan Selepas Sertai

Klausa WHERE, yang muncul selepas pernyataan JOIN, menapis keseluruhan set hasil yang dihasilkan oleh cantuman. Ia bertindak sebagai penapis selepas bergabung, mengalih keluar baris yang tidak memenuhi syarat yang ditetapkan selepas operasi gabungan selesai. Contohnya:

<code class="language-sql">SELECT *
FROM Orders
LEFT JOIN OrderLines ON OrderLines.OrderID = Orders.ID
WHERE Orders.ID = 12345;</code>
Salin selepas log masuk

Di sini, klausa WHERE menapis hasil untuk hanya memasukkan baris dengan Orders.ID ialah 12345. Baris yang tidak memenuhi syarat ini akan dihapuskan selepas LEFT JOIN telah pun menggabungkan data daripada Orders dan OrderLines.

Fasal ON: Penapisan Pra-Sertai

Sebaliknya, klausa ON, yang terletak dalam pernyataan JOIN itu sendiri, mentakrifkan kriteria sertai. Ia menentukan baris mana daripada jadual bercantum harus dipadankan sebelum cantuman dilaksanakan. Pertimbangkan pertanyaan ini:

<code class="language-sql">SELECT *
FROM Orders
LEFT JOIN OrderLines ON OrderLines.OrderID = Orders.ID AND Orders.ID = 12345;</code>
Salin selepas log masuk

Klausa ON menetapkan bahawa baris dicantumkan hanya apabila OrderLines.OrderID sepadan dengan Orders.ID dan Orders.ID bersamaan dengan 12345. Penapisan pra-gabungan ini mengurangkan data yang diproses sebelum pencantuman sebenar berlaku .

Kesamaan Fungsian lwn. Perbezaan Semantik

Walaupun hasil yang setara dari segi fungsi kadangkala boleh dicapai menggunakan mana-mana klausa, maknanya berbeza dengan ketara. WHERE menapis selepas gabungan, manakala ON mempengaruhi proses gabungan itu sendiri.

Perbezaan semantik ini amat ketara dengan LEFT atau RIGHT JOINs. Keadaan klausa WHERE mungkin mengecualikan baris daripada jadual kiri atau kanan, walaupun LEFT atau RIGHT JOIN direka bentuk untuk memasukkan semua baris daripada jadual itu. Menggunakan ON untuk keadaan penapisan memastikan bahawa cantuman itu sendiri menghormati kemasukan yang dimaksudkan untuk semua baris daripada jadual yang ditentukan.

Untuk INNER JOINs, kesannya selalunya serupa, tetapi perbezaan semantiknya kekal.

Atas ialah kandungan terperinci SQL JOINs: WHERE vs. ON: Bilakah Mereka Berbeza dalam Hasil Penapisan?. 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