基本的に問題はこれからどのように取得するかです。
id文字列 1 A 1 B 2 C
これに:
id文字列 1 A B 2 C
SELECT id, GROUP_CONCAT(string 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( string SEPARATOR ' ') FROM table GROUP BY id
もっと詳しく ここ 。
上記のリンクから、GROUP_CONCAT
:この関数は、グループからの連結されたNULL以外の値を含む文字列結果を返します。 NULL以外の値がない場合はNULLを返します。
SELECT id, GROUP_CONCAT(CAST(string as CHAR)) FROM table GROUP BY id
カンマ区切りの文字列を返します
SET group_concat_max_len=100000000
SELECT id, GROUP_CONCAT(string 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])
OR
mysql> SELECT student_name,
-> GROUP_CONCAT(DISTINCT test_score
-> ORDER BY test_score DESC SEPARATOR ' ')
-> FROM student
-> GROUP BY student_name;
素晴らしい答えです。私はNULLSにも問題があり、GROUP_CONCATの中にCOALESCEを含めることでそれを解決できました。次のような例
SELECT id, GROUP_CONCAT(COALESCE(string,'') SEPARATOR ' ')
FROM table
GROUP BY id;
これが他の人に役立つことを願っています