sql >> Database >  >> RDS >> Mysql

Retourneer bovenliggende records met onderliggende records die gelijk zijn aan specifieke waarden EN waarbij de totale set onderliggende records voor een bepaalde bovenliggende waarde gelijk is aan een specifieke waarde

De vraag zoals je erom vroeg is:

SELECT  parent.item1, parent.item2, parent.index
FROM    parent
INNER JOIN
        child
ON      child.index = parent.index
GROUP BY
        parent.item1, parent.item2, parent.index
HAVING  SUM(CASE WHEN child.value IN (1111111, 2222222) THEN 1 ELSE 0 END) = 2
        AND COUNT(*) <= 2

Als u er zeker van wilt zijn dat kinderen overeenkomen met alle waarden in de IN lijst en geen enkele die niet in de lijst staat, gebruik deze dan (in SQL Server )

SELECT  *
FROM    parent p
WHERE   NOT EXISTS
        (
        SELECT  NULL
        FROM    (
                SELECT  value
                FROM    child c
                WHERE   c.index = p.index
                ) c
        FULL JOIN
                (
                SELECT  11111111 AS value
                UNION ALL
                SELECT  22222222
                ) q
        ON      c.value = q.value
        WHERE   c.value IS NULL OR q.value IS NULL
        )



  1. Rij verwijderen als tabel bestaat SQL

  2. Maak verbinding met Oracle via SSMA

  3. Verschil tussen DELETE en TRUNCATE-tabel in SQL Server

  4. MySQL verbinden met Visual Studio C#