Нет прямой функциональности, но есть два варианта:
Использование GROUP BY / HAVING
SELECT t.documentid
FROM TABLE t
WHERE t.termid IN (1,2,3)
GROUP BY t.documentid
HAVING COUNT(DISINCT t.termid) = 3
Предостережение заключается в том, что вы должны использовать HAVING COUNT(DISTINCT
, потому что дубликаты termid, равные 2 для одного и того же документа, будут ложноположительными. И COUNT должен равняться количеству значений termid в предложении IN.
Использование JOINs
SELECT t.documentid
FROM TABLE t
JOIN TABLE x ON x.termid = t.termid
AND x.termid = 1
JOIN TABLE y ON y.termid = t.termid
AND y.termid = 2
JOIN TABLE z ON z.termid = t.termid
AND z.termid = 3
Но это может быть проблемой для критериев, которые сильно меняются.