sql >> Databasteknik >  >> RDS >> Mysql

SQL Välj endast rader där det finns flera relationer

Detta kallas Relationell 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

UPPDATERING 1

om unik begränsning tillämpades inte på prop_id för varje parent_id , DISTINCT behövs i det här fallet.

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. Hämtar RAND()-rader utan ORDER BY RAND() i bara en fråga

  2. Hur man lägger till 10 sekunder i current_timestamp SQL (Oracle)

  3. Objektet i klassen Database kunde inte konverteras till sträng

  4. Hur man skapar en tabell endast om den inte finns i SQLite