sql >> Databasteknik >  >> RDS >> Mysql

Hur man använder GROUP_CONCAT i en CONCAT i 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;

Du kan se det implementerat här :Sql Fiddle Demo . Exakt vad du behöver.

Uppdatera Uppdelning i två steg. Först får vi en tabell med alla värden (kommaseparerade) mot ett unikt[Namn,id]. Sedan får vi från den erhållna tabellen alla namn och värden som ett enda värde mot varje unikt ID. Se detta förklarat här SQL Fiddle Demo (rulla ner eftersom den har två resultatuppsättningar)

Redigera Det var ett misstag när jag läste frågan, jag hade bara grupperat efter id. Men två group_contacts behövs om (Värden ska sammanfogas grupperade efter namn och id och sedan över allt efter id). Föregående svar var

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

Du kan se det implementerat här :SQL Fiddle Demo



  1. Hur man beviljar åtkomst till v$-visningar (v$session ,v$instance)

  2. Hur skapar jag en främmande nyckel i SQL Server?

  3. Hur har man fullständig offlinefunktionalitet i en webbapp med PostgreSQL-databas?

  4. Hur man grupperar efter år i SQL