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

Consulta Mysql para encontrar ID onde várias condições se encontram para uma coluna

SELECT ID, TYPE FROM types NATURAL JOIN (
  SELECT ID FROM types GROUP BY ID HAVING SUM(COLOR='Red') AND SUM(COLOR='Blue')
) t WHERE COLOR IN ('Red', 'Blue')

Veja em sqlfiddle .

Como alternativa, se você estiver satisfeito em ter os tipos concatenados em uma string delimitada, poderá extrair os dados desejados em uma única passagem:
SELECT   ID, GROUP_CONCAT(TYPE)
FROM     types
WHERE    COLOR IN ('Red', 'Blue')
GROUP BY ID
HAVING   COUNT(*) = 2

Veja em sqlfiddle .

Observe que, se sua tabela pode conter vários registros com o mesmo (ID, COLOR) par, você deve substituir COUNT(*) com o mais caro COUNT(DISTINCT COLOR) .