2016-04-11 10 views
0
select 'A' as ctable, a.coll1, a.coll2, a.coll3 from TABLE_A a 
union all 
select 'B' as ctable, b.coll1, b.coll2, b.coll3 from TABLE_B b 

出力:JOINキーワードを使用して結合を行うことはできますか?

CTABLE COLL1 COLL2 COLL3 
A  01  abc  bac 
A  02  das  asd 
A  03  eas  sae 
B  01  bad  dab 
B  04  bmn  nmb 
B  05  cas  sac 

ここでは、私はJOINを使用して同じ出力したいです。 Coll1は両方のテーブルの主キーです。テーブルは空でもデータは同じでも構いませんが、出力は両方のテーブルのすべての行になります。

+4

なぜ 'JOIN'ですか? 'UNION ALL'のほぼ完璧なケースと思われます。 –

+0

SQLの冗長性をスキップしたい –

+0

「冗長」とはどういう意味ですか? JOINを使用して同じ結果を得るには、UNION ALLよりも多くのコードを必要としません。結果コードの効率は低く、読み込みにくくなります。 – Aleksej

答えて

0

これはUNIONと同じ性能が得られないかもしれませんが、私はあなたがビューを作成する必要があり、これはあなたが

探しているものだと思う:

create view mutex as 
select i 
from (select 0 
union 
select 1)sq (i) 

は、今あなたが得るために、このビューを使用することができますが

select coalesce(a.A,b.B),coalesce(a.coll1,b.coll1),coalesce(a.coll2,b.coll2),coalesce(a.coll3,b.coll3) 
from mutex 
left join TABLE_A as a on i =0 
left join TABLE_B as b on i =1 

注:代わりに、ミューテックスの見解で、あなたはまた、これらの2行

を持つことになり、テーブルを使用することができますよう、ご希望の結果10
関連する問題