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

SQL Изберете само редове, където съществуват множество връзки

Това се нарича Relational 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

АКТУАЛИЗИРАНЕ 1

ако уникално ограничение не беше наложено на prop_id за всеки parent_id , DISTINCT е необходимо в този случай.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Android Room - Обработка на списък с обекти в обект и търсене на резултат

  2. Мигриране от MySQL към PostgreSQL – какво трябва да знаете

  3. Свързване с множество CloudSQL екземпляри с помощта на Cloud sql прокси?

  4. Как да свържете flutter към mysql база данни на localhost

  5. Съхраняване на водещи нули на цели числа в базата данни на MySQL като INTEGER