- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:UNIONについて)
UNIONについての使い方と注意点
このQ&Aのポイント
- UNIONを使って複数のテーブルを結合する際、カラム名が同一でなくても問題ありません。
- UNIONを使用する際、ORDER BYを適用するには各SELECT文をカッコで括る必要があります。
- UNIONを使用する際の注意点として、テーブルの構成やカラム名が異なる場合でも正しく結果を取得することができます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>そんな印象があるのですが、UNIONを使う場合は、カラム名が同一でないと駄目なのでしょうか? テーブルのカラム名は何でもいいです。 エイリアス(別名)でカラム名を同じにすればよい事なので。 また、属性も同じである必要があります。 ところで、今、手元に MySQL がないので確認できないのですが、以下の書き方で MySQL はエラーにならないんでしたっけ? >SELECT name, address FROM member >UNION >SELECT c_name, c_address FROM class 普通はこのようにエイリアスでカラム名を合わせて書くのではないかと。。 ↓ SELECT name, address FROM member UNION SELECT c_name name, c_address as name FROM class >上記にあるように、テーブル名classのORDER BY c_no descが利くようにするには どのようにすべきなのでしょうか? インライビュー同士のUNIONではなく、UNIONのインラインビューでないとソートは効かないと思います。 (MySQLに限らず、ORACLEでもPostgreSQLでもMSSQLでも同様) これでどうでしょうか? ↓ SELECT v.no, v.name, v.address FROM ( SELECT no, name, address FROM member UNION SELECT c_no no, c_name name, c_address address FROM class ) v ORDER BY v.no desc
お礼
utakataXEX様 はじめまして。投稿後、早速の回答をありがとうございます! お恥ずかしい話でしょうが、エイリアスというのも初めてなので、このエイリアスに関してもちょっと調べておりました。 で、結果ですが・・最後にご提示いただきましたソースで正常に結果を返すことが出来ました!ありがとうございます。 >ところで、今、手元に MySQL がないので確認できないのですが、 >以下の書き方で MySQL はエラーにならないんでしたっけ? 少なくともこちらの環境では、質問時に記述したソースで結果を返すまでに至ってます。 ただ、ソート以外に、どうしてもうまくいかないものがあったのですが、エイリアスをお教え下さったおかげで、上手く結果を表示させることが出来ました。 以上、ご親切な対応に感謝いたします。ありがとうございました!