2016-02-25 19 views
5

Chcę dołączyć wartości wielu wierszy z tabeli. Nazwałączenie wierszy ze sobą przy użyciu mysql

Tabela: Przedmiot

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

ID są unikalne (klucz podstawowy) Co szukam wyjścia jest zapytanie mysql jest coś, co daje to wyjście, jak podano poniżej

wyjściowa:

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 

uprzejmie prośbą, aby dać pewne sugestie

+0

Można użyć 'GROUP_CONCAT()', aby to zrobić. – Harsh

+0

Możliwy duplikat [Jak używać GROUP BY do łączenia łańcuchów w MySQL?] (Http://stackoverflow.com/questions/149772/how-to-use-group-by-to-concatenate-strings-in-mysql) – trincot

+0

tutaj identyfikatory są unikatowe – user092

Odpowiedz

0

Można użyć self join z podzapytania z 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

Spróbuj zapytanie:

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 

Wykonaj poniższy odnośnik do uruchomionego demo:

SQLFiddle

1

Można użyć poniżej zapytanie.

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

Spróbuj tego zapytania

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 

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

Powiązane problemy