Rumah > pangkalan data > tutorial mysql > LEFT JOIN dalam SQL: Apakah Perbezaan Utama Antara Klausa `ON` dan `WHERE`?

LEFT JOIN dalam SQL: Apakah Perbezaan Utama Antara Klausa `ON` dan `WHERE`?

Barbara Streisand
Lepaskan: 2025-01-03 00:18:40
asal
631 orang telah melayarinya

LEFT JOIN in SQL:  What's the Key Difference Between `ON` and `WHERE` Clauses?

LEFT JOIN dengan Syarat: Di manakah Perbezaan Antara ON dan WHERE?

Dalam SQL Server, LEFT JOIN menggabungkan baris daripada dua jadual berdasarkan syarat bergabung yang ditentukan. Walaupun klausa ON mentakrifkan syarat cantum dalam pernyataan LEFT JOIN, klausa WHERE menapis baris selepas operasi cantuman. Perbezaan halus ini boleh membawa kepada hasil yang tidak dijangka jika tidak difahami dengan betul.

Pertimbangkan pertanyaan berikut:

SELECT t1.f2
FROM   t1
LEFT JOIN t2
ON t1.f1 = t2.f1 AND cond2 AND t2.f3 > something
Salin selepas log masuk

Anehnya, pertanyaan ini tidak menghasilkan keputusan yang sama seperti berikut:

SELECT t1.f2
FROM   t1
LEFT JOIN t2
ON t1.f1 = t2.f1 AND cond2
WHERE  t2.f3 > something
Salin selepas log masuk

Penjelasan

Penjelasan Klausa ON memainkan peranan penting dalam menentukan baris mana yang mengambil bahagian dalam gabungan. Syarat yang dinyatakan dalam HIDUP mestilah benar untuk baris dipadankan dan disertakan dalam hasil gabungan. Sebaliknya, klausa WHERE menapis baris yang telah dicantumkan.

Dalam pertanyaan pertama, syarat t2.f3 > sesuatu adalah sebahagian daripada klausa ON. Akibatnya, hanya baris dengan t2.f3 lebih besar daripada sesuatu akan disertakan dalam gabungan. Ini bermakna mana-mana baris yang sepadan dengan t2.f3 tidak lebih besar daripada sesuatu akan dikecualikan daripada hasilnya.

Dalam pertanyaan kedua, syarat t2.f3 > sesuatu adalah sebahagian daripada klausa WHERE. Klausa ini dinilai selepas gabungan telah dilakukan. Oleh itu, semua baris yang memenuhi syarat klausa ON (t1.f1 = t2.f1 dan cond2) akan menjadi sebahagian daripada hasil gabungan. Klausa WHERE kemudian menapis baris ini, mengekalkan hanya baris yang t2.f3 lebih besar daripada sesuatu.

Contoh

Untuk menggambarkan konsep ini, pertimbangkan jadual calon ( calon) dan jadual undi (undi). Jika kita ingin mencari calon yang telah menerima undi, kita boleh menggunakan LEFT JOIN:

SELECT  *
FROM    candidates c
LEFT JOIN    
        votes v
ON      c.name = v.voted_for
Salin selepas log masuk

Pertanyaan ini mengembalikan semua calon, malah mereka yang belum menerima sebarang undi. Jika kita mengalihkan syarat kepada klausa WHERE:

SELECT  *
FROM    candidates c
LEFT JOIN    
        votes v
ON      c.name = v.voted_for
WHERE   v.voted_for IS NOT NULL
Salin selepas log masuk

Keputusan kini hanya termasuk calon yang telah menerima sekurang-kurangnya satu undi.

Kesimpulan

Memahami perbezaan antara klausa ON dan WHERE dalam LEFT JOIN adalah penting untuk memanipulasi data dengan berkesan. Dengan meletakkan syarat dengan teliti dalam klausa yang sesuai, anda boleh memastikan pertanyaan anda mengembalikan hasil yang diingini.

Atas ialah kandungan terperinci LEFT JOIN dalam SQL: Apakah Perbezaan Utama Antara Klausa `ON` dan `WHERE`?. 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