sql >> Databáze >  >> RDS >> Oracle

jednoduchá syntaxe příkazu Oracle select

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

Ke stejnému účelu můžete také použít kolekce:

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

NEBO:

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

a pokud to přepíšete jako funkci/proceduru, můžete předat kolekci jako argument a použít CARDINALITY() funkci spíše než pevné kódování velikosti kolekce.

(Tyto poslední dva dotazy nebyly testovány, takže mohou být překlepy)



  1. Jak aktualizovat sloupec MYSQL, pokud hodnota existuje v jiné tabulce?

  2. Index Postgres GIST vs Btree

  3. Dotaz obsahující vnější spojení se v Oracle 12c chová odlišně

  4. Erlang emysql Problém s kódováním emodži pro iPhone