Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Obter todas as entradas da Tabela B que têm relação com várias entradas (lista fornecida) da Tabela A


Se você deseja selecionar com base em uma lista de As (não ALL As), faça assim:
SELECT b_id
FROM ab
WHERE a_id IN (1,2)
GROUP BY b_id
HAVING COUNT(a_id) = 2

Substitua (1,2) com sua lista e 2 na cláusula tendo com o número de itens da lista.

Se você obtiver sua lista de As de uma subconsulta, poderá fazer assim (não no MySQL, no entanto ...):
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)

No MySQL, você teria que colocar seu código de subconsulta duas vezes e descartar a cláusula WITH.

Você também pode usar uma tabela temporária, o que levaria à seleção de ALL As dessa tabela temporária e, portanto, a resposta de Gordon Linoffs ...