Oracle
 sql >> Datenbank >  >> RDS >> Oracle

einfache Oracle-Select-Anweisungssyntax

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

Sie könnten auch Sammlungen verwenden, um dasselbe zu tun:

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

ODER:

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

und wenn Sie es als Funktion/Prozedur umschreiben, können Sie die Sammlung als Argument übergeben und die CARDINALITY() verwenden funktionieren, anstatt die Größe der Sammlung fest zu codieren.

(Die letzten beiden Abfragen wurden nicht getestet, daher können einige Tippfehler enthalten sein)