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

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

DDD
Lepaskan: 2024-12-29 22:45:24
asal
706 orang telah melayarinya

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

Left Joins Disemak Semula: Perbezaan Antara Klausa ON dan WHERE

Dalam SQL Server, operasi LEFT JOIN memainkan peranan penting dalam mendapatkan data daripada berbilang jadual. Walau bagaimanapun, perbezaan yang halus namun ketara wujud antara menyatakan syarat cantuman dalam klausa ON dan klausa WHERE.

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

Pertanyaan ini cuba mendapatkan semula lajur f2 daripada jadual t1, manakala pilihan menyertai baris daripada jadual t2 berdasarkan nilai padanan dalam lajur f1 dan syarat tambahan (cond2 dan t2.f3 > sesuatu).

Sebaliknya, pertanyaan berikut menggunakan pendekatan yang berbeza:

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

Di sini, syarat cantuman ditentukan semata-mata dalam klausa ON, manakala t2 .f3 > sesuatu keadaan ditambah sebagai penapis dalam klausa WHERE.

Memahami Perbezaan

Perbezaan utama antara dua pertanyaan ini terletak pada susunan operasi:

  • ON Klausa: Menentukan syarat yang digunakan untuk mengenal pasti baris yang sepadan untuk yang menyertai. Baris yang tidak memenuhi syarat ini dikecualikan daripada set hasil gabungan.
  • WHERE Klausa: Menapis baris daripada set hasil gabungan berdasarkan syarat tambahan.

Contoh

Untuk menggambarkan perbezaan ini, pertimbangkan jadual calon (calon) dan jadual undi (undi):

candidates
| name        |
|-------------|
| Obama        |
| Romney        |

votes
| voter       | voted_for |
|-------------|-------------|
| Mickey Mouse | Romney      |
| Donald Duck  | Obama       |
Salin selepas log masuk

Pertanyaan 1:

SELECT *
FROM candidates c
LEFT JOIN votes v
ON c.name = v.voted_for AND v.voter = 'Donald Duck'
Salin selepas log masuk

Pertanyaan ini mendapatkan semula semua calon, termasuk Romney, malah walaupun Donald Duck mengundi Obama. Ini kerana syarat v.voter = 'Donald Duck' dinyatakan dalam klausa ON, yang hanya mempengaruhi operasi cantum.

Pertanyaan 2:

SELECT *
FROM candidates c
LEFT JOIN votes v
ON c.name = v.voted_for
WHERE v.voter = 'Donald Duck'
Salin selepas log masuk

Dalam pertanyaan ini, keadaan v.voter = 'Donald Duck' dialihkan ke klausa WHERE. Akibatnya, Romney dikecualikan daripada keputusan yang ditetapkan kerana dia tidak mempunyai undian yang sepadan daripada Donald Duck. Hanya Obama, yang menerima undian daripada Donald Duck, dikembalikan.

Kesimpulan

Memahami perbezaan antara klausa ON dan WHERE dalam operasi LEFT JOIN adalah penting untuk mendapatkan semula dengan berkesan data dalam SQL Server. Dengan meletakkan syarat dengan teliti dalam klausa yang sesuai, anda boleh mengawal kriteria padanan dan menapis set hasil gabungan dengan cekap.

Atas ialah kandungan terperinci LEFT JOIN dalam SQL Server: Apakah Perbezaan 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan