如何在 MySQL 的 CONCAT 中使用 GROUP_CONCAT

How to use GROUP_CONCAT in a CONCAT in MySQL(如何在 MySQL 的 CONCAT 中使用 GROUP_CONCAT)
本文介绍了如何在 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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

Simulating MySQL#39;s ORDER BY FIELD() in Postgresql(在 Postgresql 中模拟 MySQL 的 ORDER BY FIELD())
Using MySQL query to traverse rows to make a recursive tree(使用MySQL查询遍历行制作递归树)
MySQL LOAD DATA INFILE with ON DUPLICATE KEY UPDATE(MySQL LOAD DATA INFILE 和 ON DUPLICATE KEY UPDATE)
Search for quot;whole word matchquot; in MySQL(搜索“全字匹配在 MySQL 中)
add column to mysql table if it does not exist(如果不存在,则将列添加到 mysql 表)
MIN/MAX vs ORDER BY and LIMIT(MIN/MAX 与 ORDER BY 和 LIMIT)