Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memilih Rekod SQL Memadankan Pelbagai Keadaan pada Lajur yang Sama?

Bagaimana untuk Memilih Rekod SQL Memadankan Pelbagai Keadaan pada Lajur yang Sama?

Barbara Streisand
Barbara Streisandasal
2025-01-21 16:08:11296semak imbas

How to Select SQL Records Matching Multiple Conditions on the Same Column?

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!

Kenyataan:
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