回答:
SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat
上記のリンクからGROUP_CONCAT
:この関数は、グループからの非NULL値を連結した文字列結果を返します。NULL以外の値がない場合は、NULLを返します。
SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;
:-MySQLでは、式の組み合わせの連結値を取得できます。重複する値を削除するには、DISTINCT句を使用します。結果の値をソートするには、ORDER BY句を使用します。逆順に並べ替えるには、ORDER BY句で並べ替えの基準となる列の名前にDESC(降順)キーワードを追加します。デフォルトは昇順です。これは、ASCキーワードを使用して明示的に指定できます。グループ内の値間のデフォルトの区切り文字はカンマ(“、”)です。セパレータを明示的に指定するには、SEPARATORの後にグループ値の間に挿入する必要がある文字列リテラル値を続けます。セパレータを完全に削除するには、SEPARATOR ''を指定します。
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
または
mysql> SELECT student_name,
-> GROUP_CONCAT(DISTINCT test_score
-> ORDER BY test_score DESC SEPARATOR ' ')
-> FROM student
-> GROUP BY student_name;
結果はgroup_concat_max_lenシステム変数で指定された最大長に切り捨てられます。これはデフォルト値が1024文字なので、最初に次のようにします。
SET group_concat_max_len=100000000;
そして、例えば:
SELECT pub_id,GROUP_CONCAT(cate_id SEPARATOR ' ') FROM book_mast GROUP BY pub_id
group_concat_max_len
ですか?現在の接続/セッション、または他のクライアントに影響しますか?