Bạn có thể sử dụng GROUP BY
và 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
(giả sử contact_id, flag
là duy nhất).
Hoặc sử dụng các phép nối:
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'
Nếu danh sách các cờ rất dài và có nhiều trận đấu thì đầu tiên có lẽ nhanh hơn. Nếu danh sách cờ ngắn và có ít trận đấu, bạn có thể sẽ thấy rằng cờ thứ hai nhanh hơn. Nếu lo ngại về hiệu suất, hãy thử kiểm tra cả hai dữ liệu của bạn để xem cái nào hoạt động tốt nhất.