首页 / MYSQL / mysql多行变多列(衍生形式)
mysql多行变多列(衍生形式)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql多行变多列(衍生形式),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2424字,纯文字阅读大概需要4分钟。
内容图文
![mysql多行变多列(衍生形式)](/upload/InfoBanner/zyjiaocheng/463/136d093aa3844be2beed8bdcfe46a4ac.jpg)
我的这篇文章整理了mysql多行变多列的2种常见形式:http://blog.csdn.net/rainyspring4540/article/details/50231435
这里就不赘述了,下面说下它更复杂的衍生形式:
表结构:
create table student ( name varchar(20) not null, -- 姓名 course varchar(20) not null,-- 科目 score int ,-- 成绩 bossEvaluate varchar(20),-- 校长评估 familyEvaluate varchar(20),-- 家族评估 societyEvaluate varchar(20), -- 社会评估 primary key(name,course) ); insert into student values('小王','数学','10','A','B','C'); insert into student values('小王','语文','20','A','B','C'); insert into student values('小王','英语','30','A','B','C'); insert into student values('小花','数学','10','A','A','A'); insert into student values('小花','语文','40','A','A','C'); insert into student values('小花','英语','10','A','B','C'); insert into student values('小虎','数学','25','C','B','C'); insert into student values('小虎','语文','10','A','C','C'); insert into student values('小虎','英语','10','A','B','C');
形如:
下面的是一般的生成展现和sql,贴出来就不赘述了:
SELECT name ,max(if(course='数学',score,0)) as '数学' ,max(if(course='语文',score,0)) as '语文' ,max(if(course='英语',score,0)) as '英语' FROM ds_wjytest2.student group by name;我这里用的是if不是case when,其实效果都差不多;
下面是更复杂点的衍生展现和sql:
SELECT name , max(if(course='数学',score,0)) as '数学' ,max(if(course='数学',bossEvaluate,null)) as '校长评估' ,max(if(course='数学',familyEvaluate,null)) as '家族评估' ,max(if(course='数学',societyEvaluate,null)) as '社会评估', max(if(course='语文',score,0)) as '语文' ,max(if(course='语文',bossEvaluate,null)) as '校长评估' ,max(if(course='语文',familyEvaluate,null)) as '家族评估' ,max(if(course='语文',societyEvaluate,null)) as '社会评估', max(if(course='英语',score,0)) as '英语' ,max(if(course='英语',bossEvaluate,null)) as '校长评估',max(if(course='英语',familyEvaluate,null)) as '家族评估' ,max(if(course='英语',societyEvaluate,null)) as '社会评估' FROM ds_wjytest2.student group by name;
是不是感觉if函数很好用。。。有些领导就喜欢这种冗长的报表,顺便说下:如果是大数据导出这样结构的数据,最好不要使用这个语句,如果数据量太大(10w),或者类似这样的伴随分类字段(这里科目是分类字段)的延伸字段(家长评价、社会评价、小校长评价)太多会是性能极速下降;
我测试解决大数据导出这样结构采用分页导出(带排序字段),并且每次分页读取时先缓存一部分基本表的信息,由于是带排序的,所有缓存的命中率很高;已经命中的清除缓存,未命中的库里读取这个记录,并在此读入一部分信息到缓存(细节以后单写篇文章。。。)
mysql多行变多列(衍生形式)
标签:
本文系统来源:http://blog.csdn.net/rainyspring4540/article/details/51328877
内容总结
以上是互联网集市为您收集整理的mysql多行变多列(衍生形式)全部内容,希望文章能够帮你解决mysql多行变多列(衍生形式)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。