mysql~GROUP_CONCAT实现关系表的行转列

这篇具有很好参考价值的文章主要介绍了mysql~GROUP_CONCAT实现关系表的行转列。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作用

GROUP_CONCAT 是 MySQL 中用于将查询结果集中的多行数据合并为单个字符串的聚合函数。它将每行数据的指定字段值连接起来,并以指定的分隔符分隔,最终返回一个包含所有值的字符串。

以下是 GROUP_CONCAT 函数的一般语法:

SELECT GROUP_CONCAT(column_name SEPARATOR ', ') FROM table_name GROUP BY group_column;
  • column_name:要连接的字段名。
  • SEPARATOR:可选参数,用于指定连接不同值时使用的分隔符,默认为逗号。
  • table_name:表名。
  • group_column:分组列,用于指定对哪个列进行分组。

性能问题

  1. 内存消耗GROUP_CONCAT 可能导致内存消耗较大,特别是在处理大量数据时,需要注意内存使用情况。
  2. 字符串长度限制:默认情况下,GROUP_CONCAT 返回的字符串长度有限制(默认为1024字节),如果超出限制会截断字符串。可以通过设置 group_concat_max_len 参数调整最大长度。
  3. 性能优化:对于大数据量的情况,可以考虑通过增加 group_concat_max_len 的值或者拆分查询来提高性能。另外,避免在大表上频繁使用 GROUP_CONCAT 也是一种优化策略。
  4. 索引利用:在使用 GROUP_CONCAT 时,确保相关字段有索引,可以提高查询效率。

总的来说,GROUP_CONCAT 在某些场景下非常方便,但在处理大量数据时需要注意潜在的性能问题,合理使用并结合其他优化手段可以提升查询效率。希望这些信息对你有所帮助。如果有其他问题,请随时告诉我。

业务场景

  • 有表business_function,表示一个功能
  • 有表business_function_product_r,表示这个功能所属于的产品列表
  • 一个功能可以对应多个产品
  • 如果直接使用left join组合的话,如果遇到多个产品关系时,会一个功能多条记录,这在分页时,会有问题

GROUP_CONCAT和FIND_IN_SET实现组合和检索

 select a.id,
      a.title,
      a.title_eng,
      a.code,
      a.description,
      a.is_display,
      a.is_enable,
      a.category_id,
  GROUP_CONCAT(r.product_id) AS functions
  from business_function a
  left join business_function_product_r r on a.id = r.function_id
  group by a.id,
      a.title,
      a.title_eng,
      a.code,
      a.description,
      a.is_display,
      a.is_enable,
      a.category_id
 HAVING FIND_IN_SET(4, functions) > 0

分组并进行行转列的结果会在functions列,每个值用逗号分开

mysql~GROUP_CONCAT实现关系表的行转列文章来源地址https://www.toymoban.com/news/detail-848662.html

到了这里,关于mysql~GROUP_CONCAT实现关系表的行转列的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一个mysql的group_concat导致的问题

    好久都没有写点东西了,是时候有点写东西的必要了。 去年下年底离职了,躺了几个月,最近又兜兜转转换了一家公司继续当牛马了,前段时间八股文背了好多,难受呀,不过我也趁着前段时间自己也整理了属于我自己的八股文,有好几万字吧,哈哈哈,以后就不用到处去找

    2024年02月06日
    浏览(46)
  • MySQL函数:列转行CONCAT、CONCAT_WS、GROUP_CONCAT的使用(精要)

    很久没有接触Mysql了。 今天心血来潮,突然想了解一下Mysql列转行,看了一些文章,重点不清晰,遂有下文! Mysql官网、 社区版下载( Windows版_mysql.8.0.31下载  ) Mysql内部提供了列转行的三个函数,分别是: CONCAT( str1,str2,... ) CONCAT_WS( separator,str1,str2,... ) GROUP_CONCAT( expr ) 数

    2024年02月05日
    浏览(41)
  • Mysql 合并多个分组。GROUP_CONCAT 函数 及其平替函数

    GROUP_CONCAT 函数用于将一个分组内的多行数据合并成一个字符串,并以指定的分隔符进行分隔。常用于需要将一个分组内的多条数据以字符串的形式展示的情况。语法如下: GROUP_CONCAT(expr [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [, expr ...]] [SEPARATOR str_val]) 其中,expr 表示要

    2024年02月02日
    浏览(53)
  • SQL Server实现group_concat函数

    情景:每个人有多张银行卡,现在需统计出每个人的银行卡并展示成一行,表单如下: 实现sql: group_concat() 函数将组中的字符串连接成为具有各种选项的单个字符串。 separator 指定在组中的值之间插入的文字值,默认 \\\' , \\\' 2.1 FOR XML PATH(\\\'\\\')函数,使结果集转为XML文档形式 2.2 转换

    2024年02月17日
    浏览(43)
  • mysql 查询的字段值太长显示不全 group_concat

    当前这个字段非常的长,在数据库看的时候也只是显示一部分内容,这是由于group_concat的group_concat_max_len参数的值太小造成的,默认值如下:  我们需要将这个值调大一点就可以解决上面这个问题了:  

    2024年02月11日
    浏览(43)
  • mysql 字符 1024个字符限制 cast转为varchar 不限制字符长度 最大字符长度 group_concat长度限制

    设置group_concat的最大长度然后再运行

    2024年02月16日
    浏览(62)
  • Hive中的常用concat函数——concat函数、concat_ws函数和group_concat函数

    连接参数的函数,返回结果为连接参数的字符串。如果有一个参数为 NULL ,则返回的结果为 NULL 。 concat() 的一个特殊形式,表示 concat with separator ,两个参数之间加上特定的分隔符。返回的是用指定分隔符连接参数的字符串。如果分割符为 null ,则返回 null ,参数为 null ,则

    2024年02月02日
    浏览(44)
  • MySQL使用GROUP BY分组后,获取每组中时间记录最新的行对应的其他字段

    在编写MySQL数据库查询语句时,经常遇到使用GROUP BY分组后,需要获取每组中时间记录最新的行对应的其他字段这一情况。例如下表(t_score): id student course score examdate 1 小张 语文 89.0 2023-06-29 2 小张 数学 90.0 2023-06-29 3 小张 语文 91.0 2024-01-10 4 小张 数学 93.0 2024-01-10 5 小李 语

    2024年01月17日
    浏览(36)
  • 【MySQL】MySQL表的增删查改以及聚合函数/group by句子的使用

    语法: 插入两条记录,value_list 数量必须和定义表的列的数量及顺序一致 注意,这里在插入的时候,也可以不用指定id(当然,那时候就需要明确插入数据到那些列了),那么mysql会使用默认的值进行自增。 插入两条记录,value_list 数量必须和指定列数量及顺序一致 由于 主键

    2024年01月19日
    浏览(55)
  • {MySQL} 数据库约束& 表的关系& 新增&&删除& 修改& 查询

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:这里可以添加本文要记录的大概内容: 承接上文,继续讲一下MySQL 提示:以下是本篇文章正文内容,下面案例可供参考 NOT NULL - 指示某列不能存储 NULL 值。 UNIQUE - 保证某列的每行必须有唯一的值

    2024年02月03日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包