MySQLで縦型を横型に(擬似)変換する(GROUP BYでも全ての値を取り出す)方法
普通GROUP BYしたときには、まとめられたレコードのうちどれか1レコードだけが取れます。
GROUP_CONCATを使うと、1レコードではなくて全レコードを連結した値を取り出せます。
MySQL :: MySQL 5.6 リファレンスマニュアル :: 12.19.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 | +------------------+------------------+
(動かしてないけど多分動くと思います・・・。動かなかったらごめん)