Můžete buď použít GROUP BY
a 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
(za předpokladu contact_id, flag
je jedinečný).
Nebo použijte spojení:
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'
Pokud je seznam příznaků velmi dlouhý a existuje mnoho shod, první je pravděpodobně rychlejší. Pokud je seznam vlajek krátký a shod je málo, pravděpodobně zjistíte, že druhý je rychlejší. Pokud jde o výkon, zkuste na svých datech otestovat obojí, abyste zjistili, které funguje nejlépe.