複数の異なったテーブル群からの取得結果を同一に扱うにはUNIONを用いる。
select ....
UNION
select ....
みたいな。取得する列の数はselect文全部で一緒にさせないといけない。
今回業務で使ったSQLはさらに、上位のテーブルのデータがあれば、それを優先して使うという仕様だった。
なので、各SQL文に
1 AS RANK
2 AS RANK
というふうに優先順位を埋め込み、優先で選ぶカラムをGROUP BYして、条件としてHAVING MIN(RANK)として、ランクが高いものを用いるようにした。
ついこの前社内の講習で習ったけど「???」な感じだったけど、こうして実際に使うことで有用性を理解できました。