GROUP_CONCAT 将mysql多条数据合并为一条
实现将多条数据合并为一条数据,在mysql中可以通过 GROUP_CONCAT 函数实现

上面是潇leader发我的和工作不相关的小小小需求描述,很明显是要把id和name相同的数据合并为一条,下面按照截图建个demo演示
SET FOREIGN_KEY_CHECKS=0; -- ----------------------------
-- Table structure for demo
-- ----------------------------
DROP TABLE IF EXISTS `demo`;
CREATE TABLE `demo` (
`id` int(10) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`type` varchar(255) DEFAULT NULL,
`typename` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ----------------------------
-- Records of demo
-- ----------------------------
INSERT INTO `demo` VALUES ('', 'aa', 't1', 'ok');
INSERT INTO `demo` VALUES ('', 'aa', 't2', 'ng');
INSERT INTO `demo` VALUES ('', 'aa', 't3', 'bug');
实现sql
select id,name,GROUP_CONCAT(CONCAT_WS(',',type,typename) SEPARATOR ',') typelinks from demo GROUP BY id,name;

拓展一下,演示怎么去重,在GROUP_CONCAT函数中通过对合并字段添加 DISTINCT 约束即可。

GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col ...]]
[SEPARATOR str_val])
上面是GROUP_CONCAT的语法,另外还有几项注意:
- 使用GROUP_CONCAT 必须要用GROUP BY 语句来进行分组管理,不然所有的数据都会被合并成一条记录。
- MySQL对于GROUP_CONCAT结果用系统变量group_concat_max_len做了限制,默认值是1024。所以,如果合并有很多列,最好将该值设大一些。
GROUP_CONCAT 将mysql多条数据合并为一条的更多相关文章
- sqlserver中 多条数据合并成一条数据 (stuff 与 for xml path 连用)
SQL 列转行,即多行合并成一条 需求:按照分组,将多条记录内容合并成一条,效果如下: 数据库示例: CREATE TABLE [t2]([NID] [bigint] NULL,[district ...
- oracle将多条数据合并成一条
select t.col1,t.col2 ,wmsys.wm_concat(t.col3||' ') AS col3 , wmsys.wm_concat(t.col4||'') as col4,w ...
- MySQL函数GROUP_CONCAT() 实现多条数据合并
group_concat()会计算哪些行属于同一组,将属于同一组的列显示出来,group by指定的列进行分组. 例如: -- 根据物流订单id查询所有物流订单,车源订单,车辆信息(多条数据合并为一条 ...
- sqlserver 将多行数据查询合并为一条数据
有这样一个需求:表T_FUN_TASK为任务表,有字段(TASKID,TASKNAME),表T_FUN_LOGBOOK为日志表,有字段(LOGID,TASKID,LOGDATE),一个任务可持续多天, ...
- 如何将多条update语句合并为一条
需求: 如何将多条update语句合并为一条update语句:如,update table1 set col='2012' where id='2014001' update table1 ...
- SQL 一列数据整合为一条数据
SQL 一列数据整合为一条数据: SELECT STUFF(( SELECT distinct ',' + 列名 FROM 表名 where [条件] FOR XML PATH('') ), 1 ...
- Mysql多条数据以一条展示和判断某字符是否在某字段
多条数据以一条数据展示:GROUP_CONCAT select GROUP_CONCAT(uuid) from user; 判断某字符是否存在某字段:INSTR select * from( sele ...
- 实现java 中 list集合中有几十万条数据,每100条为一组取出
解决"java 中 list集合中有几十万条数据,每100条为一组取出来如何实现,求代码!!!"的问题. 具体解决方案如下: /** * 实现java 中 list集合中有几十万条 ...
- SQL 去重 显示第一条数据 显示一条数据
需求描述:根据某一个字段或几个字段去重来显示任一条数据,第一条或最后一条. 数据样式如下图: 尝试解决: --count(*)方法(只把条数为1条的显示出来了,超过1条全部过滤了) select * ...
随机推荐
- systemd_journal_no_entries问题解决
问题: #journalctl Journal file /var/log/journal/410/system@0.journal~ uses an unsupported feature, ign ...
- python 执行系统命令模块比较
python 执行系统命令模块比较 1.os.system模块 仅仅在子终端运行命令,返回状态码,0为成功,其他为失败,但是不返回执行结果 如果再命令行下执行,结果直接打印出来 >>> ...
- 【转载】用户通过WEB方式更改AD域帐户密码
用户改自己的域帐户密码一般通过以下几种方式: 加域的PC,用户直接按:Ctrl+Alt+Del键,点击:更改密码 通过exchange owa更改密码 让管理员重置密码 除了以上方式外,很多企业通过开 ...
- 使用virtualbox安装unbuntu开启共享文件夹时遇到的权限问题
在安装完虚拟机之后,开启文件夹共享,发现只能用root进行访问,个人帐号无权限: cust@hqjia-desktop:/media$ ll drwxr-xr-x 4 root root 4096 2 ...
- ThreadStatic特性
文章:ThreadStatic特性 地址:https://www.cnblogs.com/xuejietong/p/10997385.html 带有threadStaticAttribute标记的静态 ...
- RQM — 需求驱动的测试管理工具
嵌入式系统复杂程度越来越高,随之而来的测试要求和任务也越来越繁重,而测试更多的是对产品满足需求情况的测试,因此,在高强度.高频度的测试过程中,难免有需求遗漏.回归测试不充分.缺陷管理不合理.测试人员疏 ...
- python __main__ 里的变量是全局变量 因此在函数里面可以访问到
__main__ and scoping in python from:https://stackoverflow.com/questions/4775579/main-and-scoping-in- ...
- php5.6 的mcrypt_encrypt 函数可以和5.5.9的行为一样
php5.5.9 -----------------------$output = "test php !!" $key = "abcd123456789"; ...
- (java)selenium webdriver学习---实现简单的翻页,将页面内容的标题和标题链接取出
selenium webdriver学习---实现简单的翻页,将页面内容的标题和标题链接取出: 该情况适合能能循环page=1~n,并且每个网页随着循环可以打开的情况, 注意一定是自己拼接的url可以 ...
- jdk、jre、jvm三者联系
JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE.Java工具和Java基础类库.Java Runtime Enviro ...