How to use GROUP_CONCAT in a CONCAT in MySQL(如何在 MySQL 的 CONCAT 中使用 GROUP_CONCAT)
问题描述
如果我在 MySQL 中有一个包含以下数据的表:
If I have a table with the following data in MySQL:
id Name Value
1 A 4
1 A 5
1 B 8
2 C 9
如何将其转换为以下格式?
how do I get it into the following format?
id Column
1 A:4,5,B:8
2 C:9
我想我必须使用 GROUP_CONCAT
.但我不确定它是如何工作的.
I think I have to use GROUP_CONCAT
. But I'm not sure how it works.
推荐答案
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 Demo.正是您所需要的.
You can see it implemented here : Sql Fiddle Demo. Exactly what you need.
更新分两步拆分.首先,我们得到一个表,其中包含针对唯一 [Name,id] 的所有值(逗号分隔).然后从获得的表中,我们将所有名称和值作为针对每个唯一 id 的单个值请参阅此处的说明 SQL Fiddle Demo(向下滚动有两个结果集)
Update Splitting in two steps. First we get a table having all values(comma separated) against a unique[Name,id]. Then from obtained table we get all names and values as a single value against each unique id See this explained here SQL Fiddle Demo (scroll down as it has two result sets)
编辑 阅读问题时出错,我仅按 id 分组.但是如果(值要按名称和 id 分组,然后按 id 分组),则需要两个 group_contacts.以前的答案是
Edit There was a mistake in reading question, I had grouped only by id. But two group_contacts are needed if (Values are to be concatenated grouped by Name and id and then over all by id). Previous answer was
select
id,group_concat(concat(`name`,':',`value`) separator ',')
as Result from mytbl group by id
你可以在这里看到它的实现:SQL Fiddle Demo
You can see it implemented here : SQL Fiddle Demo
这篇关于如何在 MySQL 的 CONCAT 中使用 GROUP_CONCAT的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何在 MySQL 的 CONCAT 中使用 GROUP_CONCAT
基础教程推荐
- Sql Server 字符串到日期的转换 2021-01-01
- 在 VB.NET 中更新 SQL Server DateTime 列 2021-01-01
- 将数据从 MS SQL 迁移到 PostgreSQL? 2022-01-01
- SQL Server 2016更改对象所有者 2022-01-01
- 如何在 SQL Server 的嵌套过程中处理事务? 2021-01-01
- 无法在 ubuntu 中启动 mysql 服务器 2021-01-01
- 使用pyodbc“不安全"的Python多处理和数据库访问? 2022-01-01
- SQL Server 中单行 MERGE/upsert 的语法 2021-01-01
- SQL Server:只有 GROUP BY 中的最后一个条目 2021-01-01
- ERROR 2006 (HY000): MySQL 服务器已经消失 2021-01-01