- [JavaScript]jQuery(html, props)でinput要素を生成する場合の正しい書き方
- [その他]はてなダイアリーやめたい
- [Perl]Module::Buildを使ってると勝手にshebangが書き換わる
- [その他]直ったかも?!→Re: Googleカレンダーの「毎日の予定リスト」通知メールが止まらない
- [その他]20歳になりました!
- [Shell]lessでタブ文字を表示する
- [Emacs]ミニバッファの邪魔な履歴を削除する
- [Emacs]Emacsのiswitchbで、普段は*...*を完全無視して必要なときだけ出す設定
- [Emacs][Thunderbird]コマンドラインからMessage-IDを指定してメールを開く方法。それをOrgMode(Emacs)からも開けるようにする。
- [ソフトウェア][Perl]tiarraのSystem::SendMessage(ControlPort経由)のログをLog::Channel経由で記録する
2010年12月06日
■[Database]MySQLで縦型を横型に(擬似)変換する(GROUP BYでも全ての値を取り出す)方法
普通GROUP BYしたときには、まとめられたレコードのうちどれか1レコードだけが取れます。
GROUP_CONCATを使うと、1レコードではなくて全レコードを連結した値を取り出せます。
MySQL :: MySQL 5.1 リファレンスマニュアル :: 11.11.1 GROUP BY ( 集約 ) 関数
マニュアルには、生徒の名前でGROUP BYして、テストの点数をカンマ区切りで取り出す例が載ってます。
で、GROUP_CONCATはGROUP BYしなくても使えます。
SELECT c1 from t1;
+----+----+ | c1 | c2 | +----+----+ | 1 | a | | 2 | b | | 3 | c | +----+----+
SELECT GROUP_CONCAT(c1), GROUP_CONCAT(c2) from t1;
これでカラムc1の全ての値がカンマ区切りで取得できます。
+------------------+------------------+ | GROUP_CONCAT(c1) | GROUP_CONCAT(c2) | +------------------+------------------+ | 1,2,3 | a,b,c | +------------------+------------------+
(動かしてないけど多分動くと思います・・・。動かなかったらごめん)
