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

simpel Oracle select-sætningssyntaks

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

Du kan også bruge samlinger til at gøre det samme:

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 );

ELLER:

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

og hvis du omskriver det som en funktion/procedure, kan du sende samlingen ind som et argument og bruge CARDINALITY() funktion frem for hårdkodning af samlingens størrelse.

(Ikke testet disse to sidste forespørgsler, så der kan være nogle stavefejl)



  1. MySQL-forespørgsel med flere tabeller

  2. Hvordan man bruger psycopg2 til at hente en bestemt nøgles værdi fra en postgres-tabel, som har nøgle-værdi-par

  3. skal have dato i formatet åååå-mm i mssql

  4. Java - Hvordan kalder man en orakelprocedure med brugerdefinerede typer?