てぃぐれのプログラマwiki

ワクワクに従う

知らなかった集合演算子のルール【ORACLE】

列名は同じじゃなくても良い

select
    学生番号 as "01",
    性別 as "02"
from
    TT01_学生
union all
select
    学生番号 as "03",
    部活動コード as "04"
from
    TT02_所属部活動

結果:

01 02
2010B0162 1
2010B0163 1
2010B0164 2

データの型とカラム数が一緒の必要がある。無理やり数を合わせる場合は、nullを使おう。

 

ORDER BY句

基本的に集合演算子以降には使えない。


select 学生番号 as "01",
性別 as "02"
from TT01_学生
union all

select 学生番号 as "03",
部活動コード as "04"
from TT02_所属部活動

order by "03"

 

結果:ORA-00904: "03": invalid identifier

 

下記は可能。でも普通、列名は全て合わせるイメージだが。

select 学生番号 as "01",
性別 as "02"
from TT01_学生
union all

select 学生番号 as "03",
部活動コード as "04"
from TT02_所属部活動

order by "01"

 

ORDER句がないUNIONは1列目がASCとして並び替えられる

UNIONが遅い原因の一つになりそう。。

 

UNION寺のNULLは一つの値としてカウントされるため、NULLの重複も弾かれる

NULLのことはいつも片隅に留めておく必要がある。