Wenn Sie basierend auf einer Liste von As (nicht ALLEN As) auswählen möchten, gehen Sie folgendermaßen vor:
SELECT b_id
FROM ab
WHERE a_id IN (1,2)
GROUP BY b_id
HAVING COUNT(a_id) = 2
Ersetzen Sie (1,2)
mit deiner Liste und 2
in der having-Klausel mit der Anzahl der Listenelemente.
Wenn Sie Ihre Liste von As aus einer Unterabfrage erhalten, könnten Sie es so machen (allerdings nicht in 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)
In MySQL müssten Sie Ihren Unterabfragecode zweimal einfügen und die WITH-Klausel weglassen.
Sie könnten auch eine temporäre Tabelle verwenden, was dann dazu führen würde, ALLE As aus dieser temporären Tabelle auszuwählen, und somit Gordon Linoffs Antwort ...