Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle otrzymuje wiersze, które dokładnie pasują do listy wartości

Spróbuj tego:

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

Pomysł, w skrócie, jest następujący:

  • Policz, ile wierszy OrderDetailTable pasuje do OrderedTable według ItemID,
  • a następnie porównaj to z całkowitą liczbą ItemIDs z OrderedTable.

Jeśli te dwie liczby są równe, to podane OrderID "zawiera" wszystkie ItemIDs. Jeśli jeden jest mniejszy od drugiego, istnieje co najmniej jeden ItemID nie zawarty w danym OrderID.

W zależności od kluczy podstawowych, DISTINCT może nie być konieczne (choć to nie boli).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyodrębnianie wartości z xml clob za pomocą przestrzeni nazw przy użyciu Oracle pl/sql

  2. Po zapytaniu, które ma wpływ na wykorzystanie procesora DB, czy mogę zmniejszyć dane w tabeli, pomoże mi zmniejszyć wydajność procesora DB?

  3. Czy spust można zablokować; jak ustalić, że tak jest?

  4. aktualizacja x set y =null zajmuje dużo czasu

  5. Jak używać Hibernate Session.doWork(...) dla punktów zapisu / transakcji zagnieżdżonych?