Pokud chcete vybírat na základě seznamu jako (ne ALL As), udělejte to takto:
SELECT b_id
FROM ab
WHERE a_id IN (1,2)
GROUP BY b_id
HAVING COUNT(a_id) = 2
Nahraďte (1,2)
s vaším seznamem a 2
v klauzuli have s počtem položek seznamu.
Pokud svůj seznam As získáte z dílčího dotazu, můžete to udělat takto (ne však v 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)
V MySQL byste museli vložit kód poddotazu dvakrát a vypustit klauzuli WITH.
Můžete také použít dočasnou tabulku, která by pak vedla k výběru VŠECHNY jako z této dočasné tabulky a tedy odpověď Gordona Linoffa...