第一段:行转列
即将原本同一列下多行的不同内容作为多个字段,输出对应内容.
建表语句
SELECT * FROM tb_score
先来看一下转换后的结果:
可以看出,这里行转列是将原来的subject字段的多行内容选出来,作为结果集中的不同列,并根据userid进行分组显示对应的score.
group_concat(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果.比较抽象,难以理解.通俗点理解,其实是这样的:group_concat()会计算哪些行属于同一组,将属于同一组的列显示出来.要返回哪些列,由函数参数(就是字段名)决定.分组必须有个标准,就是根据group by指定的列进行分组.
结论:groupconcat()函数可以很好的建属于同一分组的多个行转化为一个列.
第三段:列转行
建表语句:
SELECT * FROM tb_score1
转换后:
本质是将userid的每个科目分数分散成一条记录显示出来.
直接上SQL:
附:UNION与UNION ALL的区别(摘):
①对重复结果的处理:UNION会去掉重复记录,UNION ALL不会;
以上就是土嘎嘎小编为大家整理的Mysql中行转列和列转行相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!