質問: 現在mysqlでデータ取得のコードを書いています。 質問があるのですが、 結論からいうと、 **union all で、union all 以降の列にnullがある場合、ASによる別名をつける必要はあるのでしょうか?** 例えば以下です。 ``` select フルーツ , お菓子 from 料理テーブル where 食べ物フラグ=1 union all select 野菜 , null from 料理テーブル where 食べ物フラグ=2 ``` このようにunion all 以降にnull がある場合、asによる別名を付けなくても良いのでしょうか? つけたほうが良いのでしょうか?この場合どのように出力されるのでしょうか? 「union all は選択列リストの列数とそれぞれのデータの型が一致していなければいけない」ことは知っているのですが、 細かいルールがわからずにいます。もしわかる方がいればよろしくお願い致します。
回答: 結局このやり方にするならUNIONしなくても ``` select case 食べ物フラグ when 1 then 野菜 when 2 then フルーツ end as カラム1 ,case 食べ物フラグ when 1 then null when 2 then お菓子 end as カラム2 from 料理テーブル where 食べ物フラグ in (1,2); ``` とすればよいのでは? (食べ物フラグが以前いわれたのと逆なような気がしたので逆転してあります)