对于group_contact函数一般懂一点sql的人来说,并不算太陌生,它主要配合group by 使用,起着分组时,将涉及行的相应的字段串联成一个字段如下表a:

我们按照type分类,并将对应的名称按逗号分隔保存为一个names字段可以写为:

select type,group_concat(name) names from a group by type;

结果如下:

上面就是我们group_concat常见的用法,但是今天做项目时发现group_concat还有排序的语法,于是看了相关资料发现其完整的语法如下:

GROUP_CONCAT([DISTINCT] expr[,expr ……]

[ORDER BY {unsigned_integer| col_name | expr}

[ASC | DESC] [,col_name……]]

[SEPARATOR str_val])

官方解释如下:

在MySQL中,你可以获取表达式组合的连接值。你可以使用DISTINCT删去重复值。假若你希望多结果值进行排序,则应该使用 ORDER BY子句。若要按相反顺序排列,将 DESC (递减) 关键词添加到你要用ORDER BY 子句进行排序的列名称中。默认顺序为升序;可使用ASC将其明确指定。 SEPARATOR 后面跟随应该被插入结果的值中间的字符串值。默认为逗号 (‘,’)。通过指定SEPARATOR '' ,你可以删除所有分隔符

什么意思呢?我们来实现一个功能你就知道了。如下表b:

按type 分类,查询出相应的姓名及年龄,保存为字段nameages,并按年龄从小到大的顺序排序,用";"隔开,并去重.

sql 如下:

select type,group_concat(distinct name,age order by age desc separator ';')

nameages from a group by type;

张三 的数据就被去重了。并且nameages里面的数据是按照年龄从大到小的顺序排列的。这里要注意distinct 后面的name,age字段值都相同才认为相同。

也许nameages里面的数据还不够人性化,我们可以在group_concat里面加上contact实现。

select type,group_concat(distinct concat('姓名:',name,',年龄:',age) order by age desc separator ' ; ')nameages from a group by type; 结果如下:

读者朋友们,group_concat用法get到了吗?欢迎关注及讨论!

mysql group_concat去重_mysql 数据库group_concat函数的一些用法相关推荐

  1. mysql group_concat去重_Mysql下GROUP_CONCAT使用

    之前遇到一个这样的小需求:数据表里面每一行里面存放的是每个用户每个因子的得分数(一个用户共有23个因子),而我们需要得到的报表是按用户为维度排列出每个用户的因子得分记录,其中每行记录显示的是该用户23 ...

  2. mysql uuid()冲突_MySQL数据库UUID()函数引起主键冲突问题

    在mysql新增一条数据时,产生了主键冲突问题,错误如下: 在mysql库表新增一条数据后,会触发一个触发器,触发器会根据新增的数据,进行复制n条并存储在另外的一张表中. 触发器如下: DROP TR ...

  3. mysql group_concat去重_mysql GROUP_CONCAT 函数 将相同的键的多个单元格合并到一个单元格...

    mysql GROUP_CONCAT 函数 将相同的键的多个单元格合并到一个单元格 MemberID MemberName FruitName -------------- ------------- ...

  4. mysql搜索结果去重_mysql数据库去重查询

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  5. mysql数据去重_mysql 数据去重

    数据库版本mysql5.5.10  操作工具navicate for mysql 插入数据重复了   用mysql语句去重 --  查询数量是否大于1 大于1  表示有重复数据 SELECT  cou ...

  6. mysql权限表_MySQL 数据库赋予用户权限操作表

    MySQL清空数据库的操作:truncate table tablename; MySQL 赋予用户权限命令的简单格式可概括为:grant 权限 on 数据库对象 to 用户 一.grant 普通数据 ...

  7. discuz mysql查询_Discuz!X/数据库 DB:: 函数操作方法

    本篇对数据库操作函数db进行讲解.DB::table($tablename)获取正确带前缀的表名,转换数据库句柄, DB::delete($tablename, 条件,条数限制)删除表中的数据 DB: ...

  8. mysql删除原则_MySQL数据库的增删选查

    数据库是专门存储数据对象的容器,这里的数据对象包括表.视图.触发器.存储过程等,其中表是最基本的数据对象. 创建数据库 在 MySQL 数据库中存储数据对象之前,先要创建好数据库. 语法: creat ...

  9. mysql select表达式_MySQL数据库SELECT查询表达式解析

    数据的管理在很大一部分是在进行查找工作,而SELECT占据了很大的一部分 SELECT select_expr [,select_expr...] [ FROM table_reference WHE ...

最新文章

  1. msvcr100.dll丢失原因及解决方法
  2. MySQL使用正则表达式
  3. eeglab中文教程系列(10)-利用光谱选项绘制ERP图像
  4. 《为什么在多核处理器下需要内存屏障(MenmoryBarrier)?》
  5. python 重复输出字符串
  6. UI组件之TextView及其子类(一)TextView和EditText
  7. hi3798mv300是什么手机_华为海思电视芯片hi3798mv300 硬件参数如何?
  8. C 中命名空间的五大常见用法
  9. 测试Rockey 4 Smart加密锁的C语言代码
  10. 虚拟的有时比真实的还要好(+奥运杂谈)
  11. 基于yolov3和pythorch框架的火焰识别检测算法
  12. Bioconductor Workflows
  13. Java自动化测试框架-10 - TestNG之测试结果篇(详细教程)
  14. Android图片完整性检验,Android安全测试之应用完整性校验检测
  15. 搭建软件仓库回源代理拾遗
  16. Linux里安装ghostscript
  17. 格式化U盘为FAT32
  18. 小话设计模式(十三)职责链模式
  19. 使用刻录机时的注意事项
  20. 相片尺寸规格像素一览

热门文章

  1. c++判断字符是否为空格或数字
  2. Django3 --- async
  3. Replace Temp with Query(以查询取代临时变量)
  4. 如何设计一个安全对外的接口
  5. sql无法写入mysql_无法通过写入mysql数据库pandas.to\u sql使用sqlalchemy,但不能通过没有pandas的sqlalchemy...
  6. 商城报表系统html5,关于html5:推荐这几款主流报表产品
  7. 浅析haartraining方法进行人脸检测
  8. 讲讲我对比特币和区块链的认知,挖矿不难,挖到难
  9. Markdown入门
  10. synthesize和dynamic