Memanfaatkan Penyata KES dalam SQL Server JOINs
Menggunakan penyata CASE dalam keadaan SQL Server JOIN boleh menjadi rumit. Menggunakan kenyataan CASE secara langsung dalam klausa JOIN selalunya membawa kepada ralat sintaks seperti "Sintaks salah berhampiran '='."
Memahami Ralat Sintaks
Ralat ini timbul kerana pernyataan CASE menghasilkan nilai skalar, bukan hasil Boolean benar/salah. Syarat JOIN, walau bagaimanapun, memerlukan ungkapan Boolean untuk memutuskan sama ada untuk menyertai baris. Kenyataan KES yang ringkas tanpa perbandingan tidak memenuhi keperluan ini.
Pendekatan yang Betul
Penyelesaian melibatkan mereka bentuk pernyataan CASE untuk mengeluarkan nilai Boolean (atau nilai yang boleh dibandingkan dengan Boolean dengan mudah). Output ini kemudiannya digunakan dalam perbandingan untuk mengawal cantuman.
Berikut ialah contoh keadaan JOIN yang dipertingkatkan:
<code class="language-sql">ON CASE WHEN a.type IN (1, 3) THEN CASE WHEN a.container_id = p.hobt_id THEN 1 ELSE 0 END WHEN a.type IN (2) THEN CASE WHEN a.container_id = p.partition_id THEN 1 ELSE 0 END ELSE 0 END = 1</code>
Penyata yang disemak ini menggunakan penyata CASE bersarang. Penyata CASE dalaman mengembalikan 1 jika syarat gabungan dipenuhi (cth., a.container_id = p.hobt_id
), dan 0 sebaliknya. Pernyataan CASE luar kemudiannya menggabungkan keputusan ini. Perbandingan akhir (= 1
) memastikan bahawa baris dicantumkan hanya apabila syarat dalam pernyataan CASE bersarang adalah benar.
Kaedah ini membenarkan pencantuman bersyarat bagi baris berdasarkan kriteria tertentu menggunakan pernyataan CASE dalam keadaan JOIN dengan berkesan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Pernyataan CASE Secara Berkesan dalam SQL Server JOIN Syarat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!