sql >> Databasteknik >  >> RDS >> Mysql

Mysql-fråga för att hitta ID där flera villkor uppfylls för en kolumn

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')

Se den på sqlfiddle .

Alternativt, om du är nöjd med att ha typerna sammanlänkade i en avgränsad sträng, kan du extrahera önskad data i ett enda pass:

SELECT   ID, GROUP_CONCAT(TYPE)
FROM     types
WHERE    COLOR IN ('Red', 'Blue')
GROUP BY ID
HAVING   COUNT(*) = 2

Se den på sqlfiddle .

Observera att om din tabell kan innehålla flera poster med samma (ID, COLOR) par, bör du ersätta COUNT(*) med den dyrare COUNT(DISTINCT COLOR) .




  1. Hur använder man en variabel för databasnamnet i T-SQL?

  2. Hur man listar alla tabeller i Oracle

  3. Skicka användarens geolokalisering till servern varje minut

  4. mySql - skapa en join med hjälp av en lista med kommaseparerade värden