Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So verwenden Sie GROUP_CONCAT in einem CONCAT in MySQL

select id, group_concat(`Name` separator ',') as `ColumnName`
from
(
  select 
    id, 
    concat(`Name`, ':', group_concat(`Value` separator ',')) as `Name`
  from mytbl
  group by 
    id, 
    `Name`
) tbl
group by id;

Sie können es hier implementiert sehen:Sql Fiddle Demo . Genau das, was Sie brauchen.

Aktualisieren Splitten in zwei Schritten. Zuerst erhalten wir eine Tabelle mit allen Werten (durch Komma getrennt) gegen einen eindeutigen [Name, ID]. Dann erhalten wir aus der erhaltenen Tabelle alle Namen und Werte als einen einzelnen Wert für jede eindeutige ID. Siehe dies hier erklärt SQL-Fiddle-Demo (Scrollen Sie nach unten, da es zwei Ergebnissätze hat)

Bearbeiten Es gab einen Fehler beim Lesen der Frage, ich hatte nur nach ID gruppiert. Aber zwei group_contacts werden benötigt, wenn (Werte sollen gruppiert nach Name und ID und dann insgesamt nach ID verkettet werden). Vorherige Antwort war

select 
id,group_concat(concat(`name`,':',`value`) separator ',')
as Result from mytbl group by id

Sie können es hier implementiert sehen:SQL Fiddle Demo