sql >> Databáze >  >> RDS >> Mysql

Dotaz Mysql k nalezení ID, kde se pro jeden sloupec shoduje více podmínek

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

Podívejte se na sqlfiddle .

Případně, pokud jste rádi, že máte typy zřetězené do odděleného řetězce, můžete požadovaná data extrahovat jediným průchodem:

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

Podívejte se na to na sqlfiddle .

Všimněte si, že pokud vaše tabulka může obsahovat více záznamů se stejným (ID, COLOR) pár, měli byste nahradit COUNT(*) s dražším COUNT(DISTINCT COLOR) .




  1. QSqlDatabase open vždy po aktualizaci vrátí hodnotu true

  2. Hierarchie Many-to-Many s více rodiči - PHP, MySQL

  3. Dva sloupce v poddotazu v klauzuli where

  4. Jak Atand() funguje v PostgreSQL