2016-02-25 11 views
5

テーブルから複数の行の値を結合したいとします。mysqlを使用して行をまとめて結合する

テーブル名:項目

ID |   item_id |  Value 
    1    43   item1 
    2    44   item2 
    3    44   item3 
    4    44   item4 
    5    45   item5 
    6    45   item6 

IDさんは、私が出力に探しています何 (主キー)一意である

出力以下に示すように、この出力を与えるために何かmysqlのクエリです:

ID |   item_id |  Value 
    1    43   item1 
    2    44   item2,item3,item4 
    3    44   item2,item3,item4 
    4    44   item2,item3,item4 
    5    45   item5,item6 
    6    45   item5,item6 

は親切にいくつかの提案を与えることを要求する

+0

このクエリをお試しください。 – Harsh

+0

[MySQLで文字列を連結するためにGROUP BYを使用する方法?](http://stackoverflow.com/questions/149772/how-to-use-group-by-to-concatenate-strings-in-mysql) – trincot

+0

ここにIDはユニークです – user092

答えて

0

あなたはgroup_concat

SELECT i.ID, i.item_id, subquery.`new_value` as value 
FROM item i 
JOIN (
    SELECT item_id, GROUP_CONCAT(`Value`) as new_value 
    FROM item 
    GROUP BY item_id; 
)as subquery 
ON subquery.item_id = i.item_id; 
2
SELECT t1.ID, t1.item_id, t2.Value 
FROM item t1 
INNER JOIN 
(
    SELECT item_id, GROUP_CONCAT(Value) AS Value 
    FROM item 
    GROUP BY item_id 
) t2 
    ON t1.item_id = t2.item_id 

実行するデモについては、以下のリンクをクリックしてください:

SQLFiddle

1
を使用でき

のサブクエリでself joinを使用することができますこの文字列で検索してください以下のクエリ。

SELECT GROUP_CONCAT(value) FROM Item GROUP BY item_id; 
0

あなたはそれを行うには、 `GROUP_CONCATを()`を使用することができます

SELECT t1.ID, t1.item_id, 
     (
     SELECT GROUP_CONCAT(t2.Value) FROM item AS t2 
     WHERE t1.item_id = t2.item_id 
     GROUP BY t2.item_id 
    ) AS Value 
FROM item AS t1 

デモhttp://sqlfiddle.com/#!9/bbc20/18/0

関連する問題