sql >> Databáze >  >> RDS >> Mysql

Jak používat GROUP_CONCAT v CONCAT v 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;

Implementaci můžete vidět zde:Sql Fiddle Demo . Přesně to, co potřebujete.

Aktualizovat Rozdělení ve dvou krocích. Nejprve dostaneme tabulku se všemi hodnotami (oddělenými čárkou) proti jedinečnému [Jméno, id]. Poté ze získané tabulky získáme všechna jména a hodnoty jako jednu hodnotu proti každému jedinečnému id. Viz toto vysvětlení zde Ukázka SQL Fiddle (přejděte dolů, protože má dvě sady výsledků)

Upravit Došlo k chybě při čtení otázky, seskupil jsem ji pouze podle id. Ale dva group_contacts jsou potřeba, pokud (hodnoty mají být zřetězeny seskupené podle Name a id a pak přes všechny podle id). Předchozí odpověď byla

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

Implementaci můžete vidět zde:Ukázka SQL Fiddle



  1. Jak zjistit třetí nebo nᵗʰ maximální plat z platové tabulky?

  2. Výkon proměnných tabulky v SQL Server

  3. Jak přidat omezení NOT NULL v MySQL

  4. Kurzor SQLiteDatabase je prázdný pouze na zařízeních se systémem Android 5.0+