Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Localizar dados ausentes passados ​​para SQL na cláusula


Você pode usar union para construir a tabela de cidades e então minus operador.
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

Em vez de união, você pode usar o tipo predefinido odcivarchar2list , que encurta a sintaxe:
select column_value as city 
  from table(sys.odcivarchar2list('Dallas', 'Berlin', 'Cracow', 'Praha'))
minus
select city from address

... e em vez de minus Você pode usar junções ou not in ou not exists .

Dados de teste e saída de ambas as consultas:
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