質問

基本的に問題は、これからどのように取得するかです:

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;

これが他の誰かに役立つことを願って

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top