Oracle
 sql >> Base de données >  >> RDS >> Oracle

Trouver les données manquantes transmises à SQL dans la clause

Vous pouvez utiliser union pour construire le tableau des villes puis minus opérateur.

select 'Dallas' as city from dual union all 
select 'Berlin' as city from dual union all 
select 'Cracow' as city from dual union all 
select 'Praha'  as city from dual  
minus
select city from address

Au lieu d'union, vous pouvez utiliser le type prédéfini odcivarchar2list , ce qui raccourcit la syntaxe :

select column_value as city 
  from table(sys.odcivarchar2list('Dallas', 'Berlin', 'Cracow', 'Praha'))
minus
select city from address

... et au lieu de minus Vous pouvez utiliser des jointures ou not in ou not exists .

Tester les données et le résultat des deux requêtes :

create table address (id number, city varchar2(10));
insert into address values (1, 'Rome');
insert into address values (2, 'Dallas');
insert into address values (3, 'Cracow');
insert into address values (4, 'Moscow');
insert into address values (5, 'Liverpool');
insert into address values (6, 'Cracow');
insert into address values (7, 'Seoul');

CITY
------------
Berlin
Praha