Rumah > Soal Jawab > teks badan
P粉5118967162023-08-24 17:05:54
Penggunaan:
SELECT t.contactid FROM YOUR_TABLE t WHERE flag IN ('Volunteer', 'Uploaded') GROUP BY t.contactid HAVING COUNT(DISTINCT t.flag) = 2
Kuncinya ialah bilangan hujah dalam klausa t.flag
的计数需要等于 IN
.
Gunakan COUNT(DISTINCT t.flag)
sekiranya gabungan contactid dan bendera tidak mempunyai kekangan unik - jika tiada peluang untuk penduaan, anda boleh menghilangkan DISTINCT daripada pertanyaan:
SELECT t.contactid FROM YOUR_TABLE t WHERE flag IN ('Volunteer', 'Uploaded') GROUP BY t.contactid HAVING COUNT(t.flag) = 2
P粉1388714852023-08-24 11:10:07
Anda boleh menggunakan GROUP BY
和HAVING COUNT(*) = _
:
SELECT contact_id FROM your_table WHERE flag IN ('Volunteer', 'Uploaded', ...) GROUP BY contact_id HAVING COUNT(*) = 2 -- // must match number in the WHERE flag IN (...) list
(dengan andaian contact_id, flag
adalah unik).
Atau gunakan pautan:
SELECT T1.contact_id FROM your_table T1 JOIN your_table T2 ON T1.contact_id = T2.contact_id AND T2.flag = 'Uploaded' -- // more joins if necessary WHERE T1.flag = 'Volunteer'
Jika senarai bendera panjang dan banyak perlawanan, yang pertama mungkin lebih pantas. Jika senarai bendera pendek dan terdapat beberapa perlawanan, anda mungkin mendapati yang kedua lebih pantas. Jika prestasi adalah masalah, cuba uji pada data anda untuk melihat yang mana satu berfungsi paling baik.