Se stai cercando di selezionare in base a un elenco di As (non TUTTI gli As), procedi in questo modo:
SELECT b_id
FROM ab
WHERE a_id IN (1,2)
GROUP BY b_id
HAVING COUNT(a_id) = 2
Sostituisci (1,2)
con la tua lista e 2
nella clausola having con il numero di voci dell'elenco.
Se ottieni il tuo elenco di As da una sottoquery, potresti farlo in questo modo (non in MySQL, però...):
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 dovresti inserire il tuo codice di sottoquery due volte e rilasciare la clausola WITH.
Potresti anche usare una tabella temporanea, che porterebbe quindi a selezionare TUTTI Come da quella tabella temporanea e quindi Gordon Linoffs risponde...