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

Vrátí nadřazené záznamy s podřízenými záznamy rovnými konkrétním hodnotám A kde se celková množina podřízených záznamů pro daného rodiče rovná konkrétní hodnotě

Dotaz, jak jste ho požádali, je:

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

Pokud chcete pouze zajistit, aby děti odpovídaly všem hodnotám v IN seznam a žádný není v seznamu, použijte toto (v 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. Použijte kde dotazy v datovém typu JSONB v Rails Postgres

  2. Jak získat názvy a typy sloupců z dotazu PostgreSQL (bez jeho spuštění)?

  3. Ekvivalentní klauzule MySQL ONLY IN().

  4. Přístup odepřen uživateli 'root'@'localhost'