Mysqlでカラム名つきでcsvにexportするsql文について分からないことがありました。
Mysqlでカラム名つきでcsvにexportするsql文について分からないことがありました。 以下のサイトを参考を見よう見まねで出力したら確かに思い通りの出力が出来たのですが、SELECT * の後にINTOが来たり FROMの後に()が来たりAAAといった文字が書いてあったり、構文の意味がよくわかりません。 参考ページ ◆MySQL で列名付き CSV ファイルを出力する (列名付きのCSVファイルを出力する一般的?な方法) https://qiita.com/Umazular/items/b9e5580363d90780c3a8 抜粋================= SELECT * INTO OUTFILE '/tmp/outputfile.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' FROM ( SELECT 'COLUMN1','COLUMN2' UNION SELECT COLUMN1,COLUMN2 FROM TABLE_NAME ) AAA; =================== どういう理由でこういう構文になっているのか教えていただきたいです。 もしくは解説しているページをご存じでしたら教えて頂けると幸いです。
MySQL・72閲覧・25
ベストアンサー
TABLE_NAME表の列、COLUMN1,COLUMN2を検索してCSVファイルに出力する例ですが、それではデータのみの出力になります。 そこで SELECT 'COLUMN1','COLUMN2' UNION により、列名を文字列として検索結果に縦にくっつけているのです。 その部分のクエリを「FROM句のサブクエリ」にする必要があり、AAAはASを省略していますが、その結果セットに付けた名前です。 この名前は今回のSQLでは参照することはないので、表名や列名で許される名前で、他と被らなければ何でも構いません。 今回提示のSQLでは、列名を文字定数で設定し、しかも列が2個だけの例です。 リンク先ではより実用的な例として、表の定義情報を得られる情報スキーマ(INFORMATION_SCHEMA.COLUMNS)から列名を得るものが記載されています。
質問者からのお礼コメント
皆様とても有用な情報を有難うございます。 SQL文への理解が深まりました。 今回はブログ内の実用例までご説明いただいた方をベストアンサーに選ばせていただきます。 本当にありがとうございました。
お礼日時:6/11 18:18