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

prosta składnia instrukcji Oracle select

SELECT name
FROM   FRUIT
WHERE  color IN ( 'Red', 'Green' )
GROUP BY name
HAVING COUNT( DISTINCT color ) = 2;

Możesz również użyć kolekcji, aby zrobić to samo:

CREATE FruitColorTableType AS TABLE OF FRUIT.COLOR%TYPE;
/

SELECT DISTINCT
       Name
FROM   FRUIT f
WHERE  FruitColorTableType( 'Red', 'Green' )
       SUBMULTISET OF
       CAST( MULTISET(
         SELECT Color
         FROM   FRUIT c
         WHERE  c.name = f.name
       ) AS FruitColorTableType );

LUB:

SELECT name
FROM   FRUIT
WHERE  color MEMBER OF FruitColorTableType( 'Red', 'Green' )
GROUP BY name
HAVING COUNT( DISTINCT color ) = 2;

a jeśli przepiszesz go jako funkcję/procedurę, możesz przekazać kolekcję jako argument i użyć CARDINALITY() funkcjonować, a nie kodować na stałe rozmiaru kolekcji.

(Nie testowałem tych dwóch ostatnich zapytań, więc może być kilka literówek)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. klauzula unii w sql

  2. Doradca ds. kompresji 11gR2 =Zło

  3. przekazać tablicę do procedury składowanej

  4. java.sql.SQLException:ORA-06550:po wywołaniu procedury z kodu java

  5. Oracle SQL:wybierz z tabeli z zagnieżdżoną tabelą