Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Suchen Sie fehlende Daten, die in der Klausel an SQL übergeben wurden

Sie können union verwenden Städtetabelle zu erstellen und dann minus Betreiber.

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

Anstelle von Union können Sie den vordefinierten Typ odcivarchar2list verwenden , was die Syntax verkürzt:

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

... und statt minus Sie können Joins oder not in verwenden oder not exists .

Testdaten und Ausgabe beider Abfragen:

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