sql >> Database teknologi >  >> RDS >> Oracle

Oracle får rækker, der nøjagtigt matcher listen over værdier

Prøv dette:

SELECT OrderID 
FROM OrderDetailTable JOIN OrderedTable USING (ItemID)
GROUP BY OrderID 
HAVING COUNT(DISTINCT ItemID) = (SELECT COUNT(DISTINCT ItemID) FROM OrderedTable)

Ideen er i en nøddeskal som følger:

  • Tæl hvor mange OrderDetailTable-rækker der matcher OrderedTable efter vare-ID,
  • og sammenlign det med det samlede antal vare-ID'er fra OrderedTable.

Hvis disse to tal er ens, "indeholder" det givne OrderID alle ItemID'er. Hvis den ene er mindre end den anden, er der mindst ét ​​ItemID, der ikke er indeholdt i det givne OrderID.

Afhængigt af dine primære nøgler er DISTINCT er måske ikke nødvendigt (selvom det ikke gør ondt).



  1. Årsager til MySQL-fejl 2014 Kan ikke udføre forespørgsler, mens andre ubuffrede forespørgsler er aktive

  2. Importer Excel-data til PostgreSQL 9.3

  3. MySQL kører i alt med COUNT

  4. Lat Lon Distance Calculation-forespørgsel i Oracle