GROUP BYを使用してMySQLで文字列を連結する方法は?
-
02-07-2019 - |
質問
基本的に問題は、これからどのように取得するかです:
id string 1 A 1 B 2 C
これ:
id string 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])
または
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;
これが他の誰かに役立つことを願って