sql >> Databasteknik >  >> RDS >> Oracle

Hitta saknade data som skickas till SQL in-clausule

Du kan använda union för att bygga en tabell över städer och sedan minus operatör.

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

Istället för union kan du använda fördefinierad typ odcivarchar2list , vilket förkortar syntaxen:

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

... och istället för minus Du kan använda joins eller not in eller not exists .

Testdata och utdata för båda frågorna:

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


  1. PostgreSQL LEFT OUTER JOIN frågesyntax

  2. Få sista posten för varje månad i MySQL....?

  3. Varför returnerar denna OM falskt i MySQL?

  4. Password_verify i PHP