mysql 列转行,合并字段的方法
数据表(表名:xsk)
+----+------+-----------+-------+
| id | name| course | score |
+----+------+-----------+-------+
| 1 | 刘备 | 英语 | 100 |
| 2 | 关羽 | 英语 | 99 |
| 3 | 张飞 | 英语 | 98 |
| 4 | 刘备 | 数学 | 100 |
| 5 | 关羽 | 数学 | 99 |
| 6 | 张飞 | 数学 | 98 |
+----+------+-----------+-------+
列转行:利用max(case when then)
max---聚合函数 取最大值
(case course when '英语' then score else 0 end) ---判断
as 语文---别名作为列名
select name,MAX(case when course='英语' then score end ) as 英语,MAX(case when course ='数学' then score end) as 数学 from xsk group by name ;
+------+--------+---------+
| name | 英语 | 数学 |
+------+--------+--------+
| 刘备 | 98 | 98 |
| 关羽 | 100 | 100 |
| 张飞 | 99 | 99 |
+------+--------+---------+
合并字段显示:利用group_cancat(course,”:”,”score”)
select name,group_concat(course,":",score)as 成绩 from xsk group by name;
+--------+---------------------------------+
| name | 成绩 |
+--------+---------------------------------+
| OO | english:98,chinese:98 |
| xx | english:100,chinese:100 |
| zz | english:99,chinese:99 |
+--------+---------------------------------+
group_concat(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果。
比较抽象,难以理解。
通俗点理解,其实是这样的:group_concat()会计算哪些行属于同一组,将属于同一组的列显示出来。要返回哪些列,由函
数参数(就是字段名)决定。分组必须有个标准,就是根据group by指定的列进行分组。
group_concat只有与group by语句同时使用才能产生效果
***********************************************************************************************************************************************************************
另附原文:
http://www.jb51.net/article/109487.htm
mysql 列转行,合并字段的方法的更多相关文章
- Oracle中的列转行实现字段拼接用例
文章目录 Oracle中的列转行实现字段拼接 场景 在SQL使用过程中经常有这种需求:将某列字段拼接成in('XX','XX','XX','XX','XX','XX' ...)做为查询条件. 实现 s ...
- mysql 列转行,合并字段
数据表: 列转行:利用max(case when then) max---聚合函数 取最大值 (case course when '语文' then score else 0 end) ---判断 ...
- Mysql 列转行group_concat函数,与行转列
1.正常情况. SELECT JoinEventIds from nt_mainnum 2.使用group_concat函数 select group_concat(JoinEventIds) fro ...
- mysql 列转行
第一种方法:使用序列化表的方法实现列转行 第一种方法:使用UNION的方法实现列转行 第二种方法:使用序列化表的方法实现列转行
- oracle 行转列~列转行(几种方法)
工作中,我们经常会碰到行转列的情况 这里我介绍几种简单的方法--行转列 1.oracle的pivot函数 原表 使用pivot函数: with temp as(select '四川省' nation ...
- Mysql 列转行统计查询 、行转列统计查询
-- ---------------------------- -- Table structure for `TabName` -- ---------------------------- D ...
- mysql列转行 行转列
列转行 SELECT flag ,substring_index(substring_index(t.context,), ) as result FROM ( select 'aa' as flag ...
- mysql 列转行 动态写法
-- 列转行动态sql -- 测试表DROP TABLE IF EXISTS `tb_score`; CREATE TABLE `tb_score` ( `id` int(11) NOT NULL A ...
- ( 转 ) Mysql group_concat 的反向应用实现(Mysql列转行)
用过Mysql的都知道她有一个很好的实现行转列功能的函数group_concat函数,非常方便 点击(此处)折叠或打开 SELECT * FROM group_test; SELECT id, GRO ...
随机推荐
- 洛谷 P2168 [NOI2015]荷马史诗 解题报告
P2168 [NOI2015]荷马史诗 题目描述 追逐影子的人,自己就是影子 --荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的<荷 ...
- 洛谷 P2801 教主的魔法 解题报告
P2801 教主的魔法 题目描述 教主最近学会了一种神奇的魔法,能够使人长高.于是他准备演示给XMYZ信息组每个英雄看.于是N个英雄们又一次聚集在了一起,这次他们排成了一列,被编号为1.2.--.N. ...
- JQuery选择器$()的工作原理浅析
每次申明一个jQuery对象的时候,返回的是jQuery.prototype.init对象,很多人就会不明白,init明明是jQuery.fn的方法啊,实际上这里不是方法,而是init的构造函数,因为 ...
- springboot中 后端跨域的实现配置
在springboot的启动文件中,添加此内容,可以允许跨域
- eclipse安装反编译插件jadclipse
下载jadClipse地址: 目的:将一些封装的jar或者sdk可以查看源代码 链接: http://pan.baidu.com/s/1kTN4TPd 提取码: 3fvd 将net.sf.jadcl ...
- java过滤器和监听器详解
过滤器 1.Filter工作原理(执行流程) 当客户端发出Web资源的请求时,Web服务器根据应用程序配置文件设置的过滤规则进行检查,若客户请求满足过滤规则,则对客户请求/响应进行拦截,对请求头和请求 ...
- TCP(二)
TCP半连接和全连接问题 TCP握手过程详解 如上图所示,关键部分:syns queue(半连接队列)和accept queue(全连接队列) 正常情况下的处理过程如下: 1)当server端收到cl ...
- HDU 1162 Eddy's picture (最小生成树 普里姆 )
题目链接 Problem Description Eddy begins to like painting pictures recently ,he is sure of himself to be ...
- bzoj 1083 最小生成树
裸的最小生成树. /************************************************************** Problem: User: BLADEVIL Lan ...
- Swift中的类型属性(静态变量)
http://blog.haohtml.com/archives/15098 Swift中的类型属性(静态变量) Posted on 2014/06/13 类型属性语法 在 C 或 Objective ...