Jeśli chcesz wybrać na podstawie listy jako (nie WSZYSTKIE jako), zrób to w ten sposób:
SELECT b_id
FROM ab
WHERE a_id IN (1,2)
GROUP BY b_id
HAVING COUNT(a_id) = 2
Zastąp (1,2)
z twoją listą i 2
w klauzuli having z liczbą pozycji listy.
Jeśli otrzymasz listę As z podzapytania, możesz to zrobić w ten sposób (choć nie w 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)
W MySQL musiałbyś dwukrotnie umieścić kod podzapytania i usunąć klauzulę WITH.
Możesz także użyć tabeli tymczasowej, co doprowadziłoby do wybrania WSZYSTKICH jako z tej tabeli tymczasowej, a tym samym odpowiedzi Gordona Linoffsa...