select *
from Address
where city in ('a', 'b', 'c', 'd', 'e', 'f', ...)
上記の結果にないクエリで指定された都市のみを取得するようにSQLを変更するにはどうすればよいですか?SQLに渡された不足しているデータを見つける
例:私は句の中の100の都市(ハードコードされています)を渡しました。渡した都市が住所表に表示されません。
select *
from Address
where city in ('a', 'b', 'c', 'd', 'e', 'f', ...)
上記の結果にないクエリで指定された都市のみを取得するようにSQLを変更するにはどうすればよいですか?SQLに渡された不足しているデータを見つける
例:私は句の中の100の都市(ハードコードされています)を渡しました。渡した都市が住所表に表示されません。
「ではない」あなたは都市や、その後minus
オペレータのテーブルを構築するためにunion
を使用することができます使用することができます。あなたが参加するかnot in
またはnot exists
使用することができます
select column_value as city
from table(sys.odcivarchar2list('Dallas', 'Berlin', 'Cracow', 'Praha'))
minus
select city from address
...、代わりにminus
の:
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
は、代わりに労働組合のあなたは、構文短縮事前に定義されたタイプodcivarchar2list
を、使用することができます。
テストデータと両方のクエリの出力:
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
あなたが指定されたリストにないすべてのアドレスを検索しているようです。あなたは
select * from Address where city not in
('a',
'b',
'c',
'd',
'e',
'f'
..
)
このクエリはOPの要件を満たしていません。都市が提供されている都市リストにないすべての住所のリストを返すだけですが、OPは一致する住所のないすべての都市のリストを必要とします。 –
あなたはアドレステーブルにないIN句にリストにある都市を意味しますか?どのようにIN句の都市のリストを提供しますか?あなたはそれらをハードコードしますか(手書きで書くか)?彼らはテーブルに保管されていますか? – mathguy
あなたは 'NOT IN'を使うのと同じ意味ですか? – Nicarus
質問を編集しました。はい、都市はハードコードされています。 INは単に指定された都市のリストにない行を返すだけです。 – Learner