Mysql
 sql >> база данни >  >> RDS >> Mysql

Връща родителски записи с дъщерни записи, равни на конкретни стойности И където общият набор от дъщерни записи за даден родител е равен на конкретна стойност

Заявката, както поискахте, е:

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

Ако просто искате да сте сигурни, че децата отговарят на всички стойности в 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CakePHP:Как мога да използвам операция HAVING при изграждане на заявки с метод find?

  2. Как да получа идентификационни данни за услуга за екземпляр на услуга, създаден на IBM Bluemix, без да обвързвам екземпляра към приложение на Bluemix?

  3. php:SQLSTATE[HY000] [2002] Не може да се осъществи връзка, защото целевата машина активно я отказа

  4. mysql сървърът е изчезнал грешка по време на инсталиране на миграция (laravel)

  5. Изявление на Mysql SELECT с php масив