Oracle
 sql >> база данни >  >> RDS >> Oracle

прост синтаксис на оператор за избор на Oracle

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

Можете също да използвате колекции, за да направите същото:

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

ИЛИ:

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

и ако го пренапишете като функция/процедура, можете да предадете колекцията като аргумент и да използвате CARDINALITY() функция, а не твърдо кодиране на размера на колекцията.

(Последните две заявки не са тествани, така че може да има правописни грешки)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създайте тригер за вмъкване в друга таблица

  2. oracle sql заявка за записи с клеймо за време, което попада между две клеймо за време

  3. Грешка при отпечатване на променлива REFCURSOR като OUT параметър в процедурата в Oracle 11g

  4. Оракул. Предотвратяване на условия на подзаявка за сливане и основна заявка

  5. Заобикаляне на привилегията на таблицата и С ОПЦИЯ ЗА ПРЕДОСТАВЯНЕ чрез създаване на изгледи