Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memilih Rekod SQL Memadankan Pelbagai Keadaan pada Lajur yang Sama?
Pilih rekod menggunakan berbilang kriteria padanan pada lajur yang sama
Dalam SQL, memilih rekod yang memenuhi berbilang syarat pada lajur yang sama boleh menjadi satu cabaran. Pertimbangkan senario berikut:
Anda mempunyai jadual yang menyimpan tag pengguna. Setiap entri mengandungi ID kenalan, teg dan jenis teg. Anda hanya perlu mendapatkan semula ID kenalan yang sepadan dengan semua teg yang dinyatakan dalam borang carian.
Pertanyaan yang anda cadangkan, di mana anda menggunakan berbilang syarat dengan nama lajur yang sama, tidak akan mengembalikan hasil kerana SQL mentafsirkannya sebagai satu syarat. Untuk mengatasi masalah ini, anda boleh melakukan salah satu daripada dua perkara:
Kaedah 1: Gunakan GROUP BY dan HAVING
Kaedah ini melibatkan pengumpulan hasil mengikut ID kenalan dan kemudian menyemak sama ada bilangan teg berbeza yang sepadan dengan kriteria carian adalah sama dengan bilangan teg yang ditentukan.
<code class="language-sql">SELECT contact_id FROM your_table WHERE flag IN ('Volunteer', 'Uploaded', ...) GROUP BY contact_id HAVING COUNT(*) = 2 -- // 必须与WHERE flag IN (...)列表中的数量匹配</code>
Kaedah 2: Gunakan sambungan
Kaedah ini melibatkan mencipta berbilang sambungan untuk setiap syarat.
<code class="language-sql">SELECT T1.contact_id FROM your_table T1 JOIN your_table T2 ON T1.contact_id = T2.contact_id AND T2.flag = 'Uploaded' -- // 如果需要,可以添加更多连接 WHERE T1.flag = 'Volunteer'</code>
Pilihan kaedah bergantung pada bilangan tag dan jangkaan bilangan padanan. Untuk senarai tag yang panjang dengan bilangan padanan yang kecil, pendekatan pertama (GROUP BY and HAVING) mungkin lebih pantas. Walau bagaimanapun, untuk senarai tag yang lebih pendek dengan banyak padanan, pendekatan kedua (penggabungan) mungkin berprestasi lebih baik.
Atas ialah kandungan terperinci Bagaimana untuk Memilih Rekod SQL Memadankan Pelbagai Keadaan pada Lajur yang Sama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!