问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mysql 数据库 把一个表的每3行里同一个项目,变成一行3个项目。sql文怎么写。请教了

发布网友 发布时间:2022-04-08 23:10

我来回答

2个回答

懂视网 时间:2022-04-09 03:32

我的这篇文章整理了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多行变多列(衍生形式)

标签:

热心网友 时间:2022-04-09 00:40

mysql 数据库 把一个表的每3行里同一个项目,变成一行3个项目。sql文怎么写
是一个简单的列子,我再详细说明一下吧。
A表 只有一个字段【No】,数据为1,2,3,4 四行内容
B表有三个字段【No1】,【No2】,【No3】
希望通过一个sql文,把A表的数据转换为B表的数据,使A表的相邻每3行数据变成B表的一条数据。
也就是把A表的1,2 ,3,4 四行 转换为B表的【1,2,3】,【2,3,4】两行数据。
mysql 数据库 把一个表的每3行里同一个项目,变成一行3个项目。sql...

mysql 数据库 把一个表的每3行里同一个项目,变成一行3个项目。sql文怎么写 是一个简单的列子,我再详细说明一下吧。A表 只有一个字段【No】,数据为1,2,3,4 四行内容 B表有三个字段【No1】,【No2】,【No3】希望通过一个sql文,把A表的数据转换为B表的数据,使A表的相邻每3行数据...

mysql 数据库 把一个表的每3行里同一个项目,变成一行3个项目。sql...

slect c.字段,d.字段 from (select a.字段,b.字段 from A表 left join b表 on a.id=b.id) as c left join c.id=d.id 先把2个表进行关联 在跟第3个表关联

mysql里面查某个数据库的所有表名,语句该怎么写?不要什么show tables,因...

具体语法:TABLE table_name [ORDER BY column_name] [LIMIT number [OFFSET number]]其实从语法上看,可以排序,也可以过滤记录集,不过比较简单,没有 SELECT 那么强大。示例 1 简单的建一张很小的表 y1,记录数为 10 条。表 t1,插入 10 条记录 mysql-(ytt/3305)->create table t1 (r1 in...

mysql 怎么给一个表一次增加多个字段?

1、添加单行字段:ALTER TABLE roleADD `module` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '模块';2、添加多行字段:ALTER TABLE roleADD COLUMN `module` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '模块',ADD COLUMN `type` VARCHAR(30) NOT NULL COMMENT '项目' AFTER `default_mod...

Mysql数据库中,在时间字段中把每条数据各加一个月的时间,请问怎么写sql...

使用函数 DATE_ADD(date,INTERVAL expr type)DATE_ADD(date,INTERVAL 1 MONTH)

写一个sql 查询一个表中姓名相同的记录,并把数据按照重复的次数从高到...

select 姓名列,count(1) as [重复次数] from 表名 group by 姓名列 having count(1)>=2 order by 重复次数 desc

...如何把相同字段里的数据写入另一个表里去?用mysql或PHP写_百度...

你的两个表A列有不重复的文本或文本字符串,比如两表的A列都为姓名且不重复,比如你这A列ID和UID不重复,你就可以在表2(SHEET2)B2输入VLOOKUP(A2,SHEET1!A:C,2),C2输入=VLOOKUP(A2,SHEET1!A:C,3)并向下复制,然后把表1A列的数据复到表2 的A列....

我有多条sql的更新语句,怎么用一个循环语句执行一次更新整一张数据表...

1、首先,使用Navicat for MySQL连接数据库并创建一个数据库。2、接着点击查询,这里有两个查询,随便点击一个都可以。3、既然是要执行SQL语句,所以我们要先新建一个查询窗体才得。4、写一句SQL语句来演示啦。5、写完练习的SQL语句,再点击运行按钮,左上方的绿色图标就是。6、然后记得刷新一下表,...

数据库中的CHECK约束的表达式怎样写才能使表中的一列只能取3个值?或者...

1. constraint 名字在每个数据库中唯一。也就是说单个数据库里不存在相同的两个 constraint,如果不定义,系统自动生成一个唯一的约束名字。2. check 约束针对语句 insert/update/replace/load data/load xml 生效;针对对应的 ignore 语句失效。3. 并非每个函数都可以使用,比如函数结果不确定的:NOW()...

mysql把一个数据库中的数据复制到另一个数据库中的表 2个表结构相同

1、使用软件Navicat就可迁移复制数据库,打开Navicat,右键点击左边空白的地方,点击New Connection下的MySQL,创建一个服务器的连接,下面将演示把本地的数据迁移到服务器:2、在弹出的创建新连接的窗口里,输入服务器的IP,数据库账号,密码等,然后就可以连接数据库了:3、创建好后们打开本地的数据库,...

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
个人著作权增值税需要缴纳吗? 我购买的打折机票本应该后天登机,但有事我想推迟几天再登机,可以吗 如何在网上办理机票推迟? 广州最贵的奶茶_杭州本地奶茶品牌有哪些 四川文科285分能报考什么大学 2024年吉林文科285分能考上什么大学? 2024年西藏285分能考上什么大学? 新疆文科285分能报考什么大学 2024年海南285分能考上什么大学? It's five to two中介词to表达什么意思? 乳癌局部皮肤呈橘皮样的原因 这是乳腺癌的症状吗? 这是乳腺癌的症状吗? 这是乳腺癌的早期症状吗? 这是乳腺癌的早期症状吗? 请问一下我这个是乳腺癌的症状吗? 乳房橘皮状是什么样的 乳房橘皮状是什么样的 当乳房皮肤局部凹陷或橘皮样改变时,需要警惕些什么? 关于人外有人,天外有天的故事 曾今沧海难为水 除却巫山不是云.出自何处?意思? 谁知道这首词啊??? 描写“洞房花烛夜”的成语有哪些? 解释下“妾在巫山之阳,高丘之阻,旦为朝云,暮为行雨,朝朝暮暮,阳台之下... "通途变天堑"是什么意思? “取次花丛懒回顾,半缘修道半缘君”的作者及全诗是什么? 巫山一段云的作品欣赏 襄王神女会巫山什么意思 ‘云雨巫山’是什么意思 巫山云雨的成语典故 无轴封磁力离心泵有谁知道?产品行不行? 乳房右侧皮肤橘皮状,痒,想知道是不是乳腺癌早期 乳腺癌胸上会长什么样的红斑呢 乳腺癌早期症状图片有什么表现 乳腺癌早期症状图片有什么表现 sw和SAMA系列都是骑兵吗? 乳腺增生一定会导致乳腺癌吗? 乳腺增生一定会导致乳腺癌吗? 无轴封磁力离心泵哪里有?听一听大家的介绍。 东京的巨型人脸气球到晚上还发光,这个作品的创作者是谁? 关于纳斯卡遗迹的图案有哪些说法? 小哥哥求婚火了,以为是气球拆开竟是这个? 都说宇宙处于膨胀当中,那它的膨胀中心在哪儿呢? 气球的历史? 台风来袭时为什么要放白气球? 美国1986年放飞150万只气球,缔造吉尼斯纪录,却酿成悲剧吗? 全国地质灾害调查规划的指导思想、编制依据、基本原则和目标 CF手游只能用王者烟封单向烟吗? CF手游有单向烟吗? CSGO古堡激战怎么扔烟雾