sql >> Databasteknik >  >> RDS >> Oracle

enkel Oracle select-satssyntax

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

Du kan också använda samlingar för att göra samma sak:

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;

och om du skriver om det som en funktion/procedur kan du skicka in samlingen som ett argument och använda CARDINALITY() funktion snarare än att hårdkoda storleken på samlingen.

(Testade inte de två sista frågorna så det kan finnas några stavfel)



  1. Kombinera två bord med sql JOIN?

  2. Topp 9 tips för att ställa in ditt SQL Server-kluster

  3. MySQL GROUP_CONCAT flyktar

  4. MySQL INSERT med lookup när null