ほげにっき

hogedigoの日記

SQLでunion all

oracle

select * from TABLE_A a
inner join TABLE_B b
on a.HOGE=b.HOGE
union all
select * from TABLE_A a
inner join TABLE_C c
on a.HOGE=c.HOGE

とかいうSQL流したら、「ORA-01789 問合せブロックにある結果の列数が無効です。」て怒られたですよ。

bとcは列の数が違うテーブルだからだな・・・と推測して、じゃあどうしようかとテキトーな気分で、

select a.* from TABLE_A a
inner join TABLE_B b
on a.HOGE=b.HOGE
union all
select a.* from TABLE_A a
inner join TABLE_C c
on a.HOGE=c.HOGE

と書いてみたら、通った!
へぇ。ワイルドカード使えるんだね。
ささやかラッキー、ほんのちょっと幸せ。

SQL屋さんにとっては常識なんでしょうね。