当前位置: 首页 > 面试题库 >

如何在MySQL的CONCAT中使用GROUP_CONCAT

强保臣
2023-03-14
问题内容

如果我在MySQL中有一个包含以下数据的表:

id       Name       Value
1          A          4
1          A          5
1          B          8
2          C          9

如何将其转换为以下格式?

id         Column
1          A:4,5,B:8
2          C:9

我想我必须使用GROUP_CONCAT。但是我不确定它是如何工作的。


问题答案:
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演示 。正是您所需要的。

*分两步 *更新
拆分。首先,我们得到一个表,该表具有一个唯一值[Name,id]的所有值(用逗号分隔)。然后从获得的表中,将所有名称和值作为针对每个唯一id的单个值获得。请参见
SQL Fiddle演示
(此处向下滚动,因为它有两个结果集)

编辑 在阅读问题时出现错误,我仅按ID分组。但是,如果需要两个group_contacts(值将按名称和ID分组,然后按ID整体分组)。
先前的答案是

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

您可以在此处看到它的实现: SQL Fiddle演示



 类似资料:
  • 问题内容: 我想搜索我的表,其中有一列名字和一列姓氏。我目前接受来自某个字段的搜索字词,并将其与两列进行比较,一次 这对于单个单词搜索词可以正常工作,但结果集包含名称为“ Larry”的所有人。但是,如果有人输入名字然后输入空格,然后输入姓氏,我希望搜索结果更窄。我已经尝试了以下方法,但没有成功。 有什么建议吗? 编辑: 我正在测试的名称是“拉里·史密斯”。数据库将“ Larry”存储在“ fir

  • 问题内容: 如何使用group-concat mysql创建json格式? (我使用MySQL) 范例1: 表格1: 像语法代码那样的格式: 我需要的输出: 谢谢 问题答案: 试试这个查询- JSON格式结果-

  • 问题内容: 我想以这样的方式串联列名:列名的第一部分是一个字符串,第二部分是一个数字,这是另一个查询的结果。 例如: 能以某种方式做到这一点。这样,它不会给我带来错误,但是我没有得到预期的结果,并且似乎串联不起作用。 问题答案: 我之前曾说过无法做到这一点,但是我错了。我本人最终需要这样的东西,所以我环顾四周,发现服务器端准备好的语句使您可以从字符串构建和执行任意SQL语句。 这是我只是为了证明这

  • 问题内容: 我有以下SQL(我删除了一些selesct fi: 这将撤回我的所有任务以及与该任务相关的所有注释。我的问题是评论字段;使用 GROUP_CONCAT 创建的文件将截断输出。我不知道为什么,我也不知道如何克服这个问题。(看起来是341ish字符) 问题答案: 默认情况下,GROUP_CONCAT()限制为1024个字节。 要解决此限制并允许最多100 KB的数据,请添加my.cnf或使

  • 问题内容: 由于性能问题, 我尝试避免执行Count( )。 (即 从用户中 选择COUNT( )) 如果我在phpMyAdmin中运行以下命令,则可以: 它将返回行数。即用户数量。 但是,如果我在PHP中运行,则无法执行以下操作: 似乎PHP不希望传入两个查询。那么,我该怎么做呢? 问题答案: 仅在使用子句的情况下才有用,但仍想知道不使用会发现多少行。 考虑一下它是如何工作的: 您正在强制数据库

  • 问题内容: 假设我有一个名为“ xml”的表,该表将XML文件存储在单列“数据”中。如何编写运行XPath并仅返回与该XPath匹配的行的MySQL查询? 问题答案: 但是,您应该注意,MySQL对XPath的支持存在局限性。 仅返回CDATA。 并非所有XPath构造都受支持。abatishchev的答案中提到的文档页面上“ XPath限制”标题下的详细信息。