Oracleではunion
、重複条件が行全体ではなく単一の列にある場合に実行できますか?
私はテーブルを持っていA
て、B
それは2つの列を持っています:item_name, price
。ある特定のビューを作成して、が存在するかどうかitem_names
をテーブルA
で確認します。存在する場合はinを使用し、存在しない場合はinに移動して使用し、残りのinはまだ追加されていません。ビューに。item_name
price
A
B
price
B
union
item_name
B
例えば、
Table A Table B
---------------- ----------------
item_name price item_name price
---------------- ----------------
shoe 10 shoe 8
socks 2 socks 4
shirt 5 t-shirt 3
gloves 1 glasses 15
pants 7
shoe
と私は利用可能な場合はの価格socks
を使用したいのですが、使用しない場合は使用します。したがって、最終的に、私のビューは次のようになります。table A
table B
View
-----------------------
item_name price source
-----------------------
shoe 10 A
socks 2 A
t-shirt 3 B
glasses 15 B
pants 7 B
私は試した
select * from A a
where item_name in ('shoe', 'socks')
union
select * from B b
where b.item_name not in
(select item_name from A
where item_name in ('shoe', 'socks'))
select * from A where item_name in ('shoe', 'socks')
クエリが重複しているので気に入らない。これを行うためのより良い/より効率的な方法はありますか?