Mysql按照字段值做分组行转列查询
今天做个后台服务,有个需求是批量生成一批表的数据,如果用BulkInsert会提升很大一截提交效率,但是如果用循环构造提交的Datable,则算法开销太高,所以用这种查询批量查出符合格式的DataTable结果集。
*思想就是将查询列做CASE判断值,然后放在 SELECT段中作为别名列显示字段值,然后再根据ID分组。
下面是内层的原始查询效果:
下面是行转列后查询效果如图:
P6_VC0H9K62J3{XTX9A]4.png)
下面是上面两张图的最终查询语句:
SELECT f_gameID,SUM(score) AS totNum,
SUM(CASE f_sub WHEN '' THEN score ELSE END) AS f_subject01,SUM(CASE f_sub WHEN '' THEN score ELSE END) AS f_subject02,
SUM(CASE f_sub WHEN '' THEN score ELSE END) AS f_subject03,SUM(CASE f_sub WHEN '' THEN score ELSE END) AS f_subject04,
SUM(CASE f_sub WHEN '' THEN score ELSE END) AS f_subject05,SUM(CASE f_sub WHEN '' THEN score ELSE END) AS f_subject06,
SUM(CASE f_sub WHEN '' THEN score ELSE END) AS f_subject07,SUM(CASE f_sub WHEN '' THEN score ELSE END) AS f_subject08,
SUM(CASE f_sub WHEN '' THEN score ELSE END) AS f_subject09
FROM
(
SELECT u.f_gameID,u.f_sub,COUNT(u.f_sub) AS score
FROM t_mfg_GameUserAnswers AS u
LEFT JOIN t_mfg_Class AS c ON u.f_gameId = c.f_gameId
WHERE u.f_startTime > '2015-07-20'
AND u.f_endTime < '2015-07-24'
-- AND c.f_schoolId =
GROUP BY u.f_gameID ,u.f_sub
) AS a
GROUP BY f_gameID;
Mysql按照字段值做分组行转列查询的更多相关文章
- 今天来学习一下MySQl的 临时表,变量,行转列,预处理的一些相关技术的使用!
先来简单了解一下MySQL数据库有意思的简介 MySQL这个名字,起源不是很明确.一个比较有影响的说法是,基本指南和大量的库和工具带有前缀“my”已经有10年以上, 而且不管怎样,MySQL AB创始 ...
- Oracle学习总结(4)——MySql、SqlServer、Oracle数据库行转列大全
MySql行转列 以id分组,把name字段的值打印在一行,逗号分隔(默认) select CustomerDrugCode,group_concat(AuditItemName) from noau ...
- SqlServer 行转列 查询 并 导出 到 Excel 中 自动换行
SELECT A.Hawb, ( SELECT GoodsNameCn+char(10) FROM HawbBody hl WHERE hl.Hawb=A.Hawb FOR XML PATH('') ...
- MySQL判断字段值来确定是否插入新记录
今天正好有个新需求,要求在一张表中,保证不插入重复的记录. 即,保证每条记录中的某个字段的值不重复. 下面是我给出的SQL语句: //存在-->更新 //不存在-->插入 UPDATE 表 ...
- mysql更新字段值提示You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode
1 引言 当更新字段缺少where语句时,mysql会提示一下错误代码: Error Code: 1175. You are using safe update mode and you tried ...
- MYSQL 删除字段值为NULL的语法
2014年9月1日 15:11:05 delete form your_table where your_field is null and your_field1 = '123' ...
- mysql 升序 字段值为NULL 排在后面
select * from yryz_products_t order by isnull(sort),sort;
- mysql多字段组合删除重复行
DELETEFROM boll_paramWHERE id in ( SELECT a.id FROM ( SELECT id FROM boll_param WHERE (symbol, time_ ...
- mysql分组,行转列
aaarticlea/jpeg;base64,/9j/4QEsRXhpZgAASUkqAAgAAAAPAJqCCgABAAAAwgAAABABAgAQAAAAygAAAAABAwABAAAAQBAAA
随机推荐
- CentOS 7 SSH远程证书登陆
SSH远程证书登陆是使用"公私钥"认证的方式来进行SSH登录. 1.创建公私钥 创建方式有很多种,比如说通用ssh连接工具创建,然后把公钥上传到Server主机对应的用户目录下: ...
- python 使用getopt 获取配置参数
在工程中特别是稍微大一点的项目基本上都会用到配置,就会涉及到配置文件的读取,配置参数的读取. 常用的解析配置文件的是configParser,解析命令行参数的则为getopt. getopt的参数可以 ...
- shell基本认识
shell基本认识 bash # echo $BASH /bin/bash 第一个shell脚本first_shell.sh #!/bin/bash echo "Hello world!&q ...
- vue下个兄弟节点
checkOne(e) { e.currentTarget.nextElementSibling.style.background = 'red' }
- 在Web API 2 中实现带JSON的Patch请求
译文:http://www.cnblogs.com/kexxxfeng/p/the-patch-verb-in-web-api-2-with-json.html 原文:https://carly.io ...
- group_concat长度限制
#在MySQL配置文件(my.ini)中默认无该配置项,使用默认值时,值为1024,可在客户端执行下列语句修改: #SET GLOBAL group_concat_max_len = 1024; #该 ...
- 解决Tomcat加载时报APR错的问题
部署Tomcat的时候出现了如下错误, INFO: The APR based Apache Tomcat Native library which allows optimal performanc ...
- C++(三十) — this 指针
1.如何区分多个对象调用同一个类函数? 类外部访问类成员,必须用对象来调用.一个类的所有对象在调用的成员函数,都执行同一段代码,那成员函数如何区分属于哪个对象呢? 在对象调用成员函数时,除接收实参外, ...
- Angular----安置物流项目前端框架经验总结
一.架构方面 (一) Angular框架有service .controller层: 在Angular里面,services作为单例对象在需要到的时候被创建,只有在应用生命周期结束的时候(关闭浏览器) ...
- Java编码方式再学
一直以来对编码方式对了解不是很深入.建议读下这几篇博文 学点编码知识又不会死:Unicode的流言终结者和编码大揭秘 编码研究笔记 这几篇博文上回答了内心存在的一些问题,这些问题可能也是大家经常遇到的 ...