Hvis du ønsker at vælge baseret på en liste over As (ikke ALLE Som), så gør det sådan her:
SELECT b_id
FROM ab
WHERE a_id IN (1,2)
GROUP BY b_id
HAVING COUNT(a_id) = 2
Erstat (1,2)
med din liste og 2
i have-klausulen med antallet af listepunkter.
Hvis du får din liste over As fra en underforespørgsel, kan du gøre det sådan (dog ikke i MySQL...):
WITH subquery (
--subquery code here
)
SELECT b_id
FROM ab
WHERE a_id IN subquery
GROUP BY b_id
HAVING COUNT(a_id) = (SELECT COUNT(*) FROM subquery)
I MySQL skal du indtaste din underforespørgselskode to gange og slippe WITH-klausulen.
Du kan også bruge en midlertidig tabel, som så ville føre til at du vælger ALLE som fra den midlertidige tabel og dermed Gordon Linoffs svar...