Rumah > pangkalan data > tutorial mysql > LEFT JOIN dalam SQL Server: ON vs. WHERE Klausa – Apakah Perbezaannya dan Bila Perlu Saya Gunakan Setiap?

LEFT JOIN dalam SQL Server: ON vs. WHERE Klausa – Apakah Perbezaannya dan Bila Perlu Saya Gunakan Setiap?

Linda Hamilton
Lepaskan: 2024-12-26 19:12:13
asal
915 orang telah melayarinya

LEFT JOINs in SQL Server: ON vs. WHERE Clause – What's the Difference and When Should I Use Each?

LEFT JOIN dengan Syarat: On vs. WHERE

Dalam SQL Server, LEFT JOIN sering digunakan untuk mendapatkan data daripada satu jadual semasa memaut ke jadual lain melalui lajur biasa. Walau bagaimanapun, perbezaan halus timbul apabila menggunakan syarat dalam klausa ON dan WHERE, yang membawa kepada hasil yang berbeza.

SERTAI PADA Klausa lwn. Klausa WHERE

Klausa ON dalam LEFT JOIN menentukan syarat yang menentukan baris mana dari jadual utama (jadual bercantum) akan dipadankan dengan baris daripada jadual kedua (meja bercantum). Sebaliknya, klausa WHERE menapis set hasil selepas gabungan dilakukan.

Contoh

Pertimbangkan dua pertanyaan berikut:

-- LEFT JOIN with Condition in ON Clause
SELECT t1.f2
FROM t1
LEFT JOIN t2
ON t1.f1 = t2.f1 AND cond2 AND t2.f3 > something;

-- LEFT JOIN with Condition in WHERE Clause
SELECT t1.f2
FROM t1
LEFT JOIN t2
ON t1.f1 = t2.f1 AND cond2
WHERE t2.f3 > something;
Salin selepas log masuk

Keputusan

Anehnya, kedua-dua pertanyaan ini tidak menghasilkan keputusan yang sama. Sebabnya terletak pada perbezaan antara klausa JOIN dan WHERE.

Dalam pertanyaan pertama, keadaan dalam klausa ON mengehadkan baris mana dari t2 yang dicantumkan dengan t1. Oleh itu, baris daripada t2 yang tidak memenuhi syarat (t2.f3 <= sesuatu) akan dikecualikan daripada cantuman. Akibatnya, set hasil tidak akan termasuk baris daripada t1 yang berpotensi memadankan baris yang dikecualikan daripada t2.

Dalam pertanyaan kedua, syarat dalam klausa WHERE digunakan selepas gabungan telah dilaksanakan. Akibatnya, semua baris daripada t1 dicantumkan dengan semua baris daripada t2, tidak kira sama ada ia memenuhi syarat. Selepas itu, klausa WHERE menapis baris yang tidak memenuhi syarat, memberikan set hasil yang berbeza berbanding dengan pertanyaan pertama.

Kesimpulan

Memahami perbezaan antara klausa ON dan WHERE adalah penting apabila bekerja dengan LEFT JOIN. Klausa ON menentukan baris padanan untuk cantuman, manakala klausa WHERE menapis set hasil selepas cantuman selesai. Pemahaman ini memastikan bahawa hasil yang diingini diperoleh daripada pertanyaan SQL yang melibatkan LEFT JOIN.

Atas ialah kandungan terperinci LEFT JOIN dalam SQL Server: ON vs. WHERE Klausa – Apakah Perbezaannya dan Bila Perlu Saya Gunakan Setiap?. 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