Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да използвате GROUP_CONCAT в CONCAT в 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;

Можете да го видите внедрен тук:Sql Fiddle Демо . Точно това, от което се нуждаете.

Актуализиране Разделяне на две стъпки. Първо получаваме таблица с всички стойности (разделени със запетая) срещу уникален [Име, идентификатор]. След това от получената таблица получаваме всички имена и стойности като единична стойност срещу всеки уникален идентификатор. Вижте това обяснено тук Демонстрация на SQL Fiddle (превъртете надолу, тъй като има два набора резултати)

Редактиране Имаше грешка при четенето на въпроса, бях групирал само по идентификатор. Но са необходими два group_contacts, ако (Стойностите трябва да бъдат конкатенирани, групирани по име и идентификатор и след това върху всички по id). Предишният отговор беше

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

Можете да го видите внедрен тук:SQL Fiddle Демо



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ALTER TABLE за добавяне на съставен първичен ключ

  2. Моделиране на варианти на продукта

  3. Грешка, свързана с only_full_group_by при изпълнение на заявка в MySql

  4. MySQL синтаксис за Join Update

  5. КЪДЕ срещу ИМАНЕ