sql >> Database >  >> RDS >> Mysql

Hoe GROUP_CONCAT te gebruiken in een 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;

Je kunt het hier geïmplementeerd zien:Sql Fiddle Demo . Precies wat je nodig hebt.

Bijwerken Splitsen in twee stappen. Eerst krijgen we een tabel met alle waarden (gescheiden door komma's) tegen een unieke [Naam,id]. Vervolgens krijgen we uit de verkregen tabel alle namen en waarden als een enkele waarde tegen elke unieke id. Zie dit hier uitgelegd SQL Fiddle-demo (scroll naar beneden aangezien het twee resultaatsets heeft)

Bewerken Er was een fout bij het lezen van de vraag, ik had alleen gegroepeerd op id. Maar er zijn twee group_contacts nodig als (de waarden moeten worden samengevoegd, gegroepeerd op naam en id en dan in het algemeen op id). Vorige antwoord was

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

Je kunt het hier geïmplementeerd zien:SQL Fiddle Demo



  1. Inzicht in de unieke beperkingen van SQL Server

  2. Verbinding maken met Oracle met behulp van Service Name in plaats van SID

  3. Hoe het aantal rijen in een tabel in SQL te tellen

  4. 4 manieren om de weergaven in een SQLite-database weer te geven