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

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

Barbara Streisand
Lepaskan: 2025-01-21 16:11:10
asal
945 orang telah melayarinya

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

Pilih rekod yang sepadan dengan berbilang syarat pada lajur yang sama dalam SQL

Pertanyaan SQL kadangkala perlu mendapatkan semula rekod yang sepadan dengan berbilang syarat pada lajur yang sama. Walau bagaimanapun, hanya menggunakan berbilang klausa WHERE dengan lajur yang sama tidak selalu menghasilkan hasil yang diharapkan. Pertimbangkan contoh berikut:

Kami mempunyai jadual pangkalan data yang mengandungi kenalan dan bendera yang menunjukkan status setiap kenalan. Jadual mengandungi data berikut:

ID contactid flag flag_type
118 99 Volunteer 1
119 99 Uploaded 2
120 100 Via Import 3
121 100 Volunteer 1
122 100 Uploaded 2

Matlamatnya adalah untuk hanya mengembalikan ID kenalan yang sepadan dengan syarat bendera "Sukarelawan" dan "Muat naik". Gunakan pertanyaan berikut:

<code class="language-sql">SELECT contactid
WHERE flag = 'Volunteer'
AND flag = 'Uploaded'</code>
Salin selepas log masuk

Tiada keputusan akan dikembalikan kerana setiap syarat hanya menyemak nilai bendera tertentu. Untuk mendapatkan semula data yang diperlukan kita perlu menggunakan kaedah alternatif.

Gunakan GROUP BY dan HAVING

Satu penyelesaian ialah menggunakan klausa GROUP BY dan HAVING. Pertanyaan berikut akan mengumpulkan hasil dengan contactid dan mengira bilangan nilai bendera yang sepadan:

<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>
Salin selepas log masuk

Kenalan dengan kedua-dua bendera "Sukarelawan" dan "Muat naik" akan dikira sebagai 2. Klausa HAVING kemudian menapis keputusan untuk memasukkan hanya kenalan ini.

Gunakan sambungan

Cara lain ialah menggunakan sambungan. Pertanyaan berikut akan melakukan penyambungan sendiri pada jadual jadual anda:

<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>
Salin selepas log masuk

Pertanyaan ini akan membuat jadual sementara yang mengandungi gabungan semua kenalan yang mempunyai kedua-dua bendera "Sukarelawan" dan "Muat naik". Klausa WHERE kemudian menapis hasil untuk hanya memasukkan kenalan yang memenuhi dua syarat ini.

Pemilihan kaedah

Cara terbaik untuk memilih rekod dengan berbilang syarat pada lajur yang sama bergantung pada saiz dan struktur data anda. Untuk set data besar dengan senarai panjang kriteria padanan, penyelesaian GROUP BY dan HAVING mungkin lebih cekap. Untuk set data kecil dengan senarai kriteria pemadanan yang lebih pendek, penyelesaian JOIN mungkin lebih pantas.

Atas ialah kandungan terperinci Bagaimana untuk Memilih Rekod Memadankan Pelbagai Kriteria pada Lajur yang Sama dalam SQL?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan