MySQL分割数据
引言一般来说讲,提到数据拆分,可以归结为两个层面:一是垂直拆分,二是水平拆分。这里我们来讨论下垂直拆分。垂直拆分是以数据库、表、列等为单位进行拆分的方法。正文MySQL里垂直拆分可以细分为:垂直拆库(...
2024.11.15一. 前言
不知道小伙伴们发现没有,在面试中,数据库的查询都是必问的!更有甚者,面试官会直接让我们在答题纸上手写SQL代码。其中数据库表的行列转换查询,就是经常考察的一道题目!
二. 行转列需求展示
我们先来看看MySQL实现行转列查询的一个需求。
先给大家展示一下效果图,按行查询的结果如下图所示:
行转列后查询的结果如下图所示:
三. 代码实现
此处用到max函数,这主要是为了将无数据的字段设置为0,防止出现字段值为NULL造成出错异常。
四. 列转行需求
我们再来看看MySQL实现列转行查询的一个需求。
现创建表test2,在未转换前查询结果如下:
列转行的sql语句:
select user_name,‘语文‘ COURSE,CN_SCORE as SCORE from test2 union select user_name,‘数学‘ COURSE,MATH_SCORE as SCORE from test2 union select user_name,‘英语‘ COURSE,EN_SCORE as SCORE from test2 order by user_name,COURSE;
列转行查询的结果如下图所示:
五. 小结
最后给大家总结一下,无论是行转列或者是列转行,关键就是sql子句的使用。小伙伴们可以对照代码多练习加深理解,下次再遇见类似的问题应该就不成问题啦!
引言一般来说讲,提到数据拆分,可以归结为两个层面:一是垂直拆分,二是水平拆分。这里我们来讨论下垂直拆分。垂直拆分是以数据库、表、列等为单位进行拆分的方法。正文MySQL里垂直拆分可以细分为:垂直拆库(...
2024.11.15一、排序排序查询语法:select * from 表名 order by 列1 asc/desc [,列2 asc/desc,...]语法说明:先按照列1进行排序,如果列1的值相同时,则按照列2排序a...
2024.11.12做压测的时候有的接口非常的慢,接口的响应时间超过了2秒以上,在运维的监控系统Skvwalking中,在展示的报表中可以看到是哪一个接口比较慢,分析这个接口,可以看到哪部分比较慢,从而知道SQL的具体的...
2024.11.151、什么是autocmomit(自动提交)?2、用在哪里?3、如何修改?1、autocommit是mysql中的InnoDb数据表特有的语句。(只有在表引擎=InnoDb时,autocommit才会生...
2024.11.12MySQL的自增列情况比较特殊,之前分析了两篇。MySQL自增列主从不一致的测试(r12笔记第37天)MySQL自增列的重复值问题(r12笔记第25天)而且在OOW的时候也着重提了一下自增列的历史遗留...
2024.11.13