Menyoal Berbilang Lajur dalam Klausa IN dalam SQL
Apabila menanyakan jadual pangkalan data berdasarkan set nilai untuk lajur tertentu, Klausa IN ialah pilihan yang mudah. Walau bagaimanapun, apabila berurusan dengan berbilang lajur, klausa IN menjadi tidak boleh digunakan.
Untuk mengatasi cabaran ini, pendekatan biasa melibatkan penggunaan cantuman atau klausa EXISTS. Walau bagaimanapun, kaedah ini memerlukan kedua-dua jadual utama dan data carian untuk hadir dalam pangkalan data.
Pertimbangkan kes penggunaan di mana anda mempunyai jadual Pengguna dengan lajur (Nama depan, Nama akhir, Bandar) dan anda perlu dapatkan semula bandar untuk senarai tupel (nama pertama, Nama akhir). Dua penyelesaian berpotensi muncul:
Penyelesaian 1:
Bina pertanyaan SELECT panjang yang melibatkan OR syarat:
SELECT city FROM user WHERE (firstName=x and lastName=y) or (firstName=a and lastName=b) or ...
Penyelesaian 2:
Buat jadual pementasan yang mengandungi semua nilai firstName dan lastName dan lakukan cantuman antara jadual Pengguna dan jadual pementasan.
Penyelesaian Alternatif:
Nasib baik, terdapat cara mudah untuk membuat pertanyaan berbilang lajur menggunakan DALAM klausa:
SELECT city FROM user WHERE (firstName, lastName) IN (('a', 'b'), ('c', 'd'));
Sqlfiddle Demonstrasi:
[Demo Sqlfiddle](
Penyelesaian ini secara berkesan menangani masalah menanyakan berbilang lajur dalam klausa IN tanpa menggunakan gabungan atau klausa EXISTS. Ia menyediakan pendekatan yang cekap dan ringkas untuk mendapatkan semula data yang diingini.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Klausa IN untuk Menyoal Berbilang Lajur dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!