sql >> Database teknologi >  >> RDS >> Mysql

SQL Vælg kun rækker, hvor der findes flere relationer

Dette kaldes Relationel division

SELECT  a.name
FROM    parent a
        INNER JOIN rel b
            ON a.parent_ID = b.parent_ID
WHERE   b.prop_id IN (1,5)
GROUP BY a.name
HAVING COUNT(*) = 2

OPDATERING 1

hvis unik begrænsning blev ikke håndhævet på prop_id for hver parent_id , DISTINCT er nødvendig i denne sag.

SELECT  a.name
FROM    parent a
        INNER JOIN rel b
            ON a.parent_ID = b.parent_ID
WHERE   b.prop_id IN (1,5)
GROUP BY a.name
HAVING COUNT(DISTINCT b.prop_id) = 2


  1. Sådan fremskynder du din SQL-server ved hjælp af overvågning af databaseydeevne

  2. ORA-12704:tegnsæt uoverensstemmelse

  3. EM SQL Monitor Impact

  4. Brug af BOB i klasser