sql >> Database >  >> RDS >> Mysql

MySQL ONLY IN() equivalente clausule

dit probleem heet Relational Division

SELECT boy_id 
FROM   boys_chocolates 
WHERE  chocolate_id IN ('$string')
GROUP  BY boy_id 
HAVING COUNT(DISTINCT chocolate_id) = ? -- <<== number of chocolates specified

voorbeeld:

SELECT boy_id 
FROM   boys_chocolates 
WHERE  chocolate_id IN (1,2,3,4)
GROUP  BY boy_id 
HAVING COUNT(DISTINCT chocolate_id) = 4

echter, als de chocolate_id is uniek voor elke boy_id , DISTINCT zoekwoord is optioneel.

SELECT boy_id 
FROM   boys_chocolates 
WHERE  chocolate_id IN (1,2,3,4)
GROUP  BY boy_id 
HAVING COUNT(*) = 4

UPDATE 1

...Ik wil jongens van de tafel kiezen die precies de chocolaatjes hebben die ik noem. Niet meer, niet minder...

SELECT boy_id 
FROM   boys_chocolates a
WHERE  chocolate_id IN (1,2,3,4) AND
        EXISTS 
        (
            SELECT  1
            FROM    boys_chocolates b
            WHERE   a.boy_ID = b.boy_ID
            GROUP   BY boy_id
            HAVING  COUNT(DISTINCT chocolate_id) = 4
        )
GROUP  BY boy_id
HAVING COUNT(*) = 4



  1. Toegang met Microsoft SQL Server – Importeer grote datasets met SSIS

  2. MySQL-syntaxis bij het maken van een externe sleutel

  3. kan de externe sleutel niet laten vallen

  4. Hoe kan ik een HTTP-verzoek indienen vanaf de SQL-server?