sql >> Database >  >> RDS >> Oracle

eenvoudige syntaxis van Oracle select-instructie

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

U kunt ook verzamelingen gebruiken om hetzelfde te doen:

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

OF:

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

en als je het herschrijft als een functie/procedure, kun je de verzameling doorgeven als argument en de CARDINALITY() gebruiken functie in plaats van de grootte van de collectie hard te coderen.

(Deze laatste twee zoekopdrachten niet getest, dus er kunnen wat typefouten zijn)



  1. Waarom zou Oracle.ManagedDataAccess niet werken als Oracle.DataAccess dat wel doet?

  2. Heeft Mysql 5 procedures voor het beheren van hiërarchische gegevens?

  3. Hoe Top with Ties te gebruiken in SQL Server - SQL Server / TSQL Tutorial Part 114

  4. De Zombie PerfMon-tellers die nooit sterven!