Mysql按照字段值做分组行转列查询
2024-09-03 18:44:19
今天做个后台服务,有个需求是批量生成一批表的数据,如果用BulkInsert会提升很大一截提交效率,但是如果用循环构造提交的Datable,则算法开销太高,所以用这种查询批量查出符合格式的DataTable结果集。
*思想就是将查询列做CASE判断值,然后放在 SELECT段中作为别名列显示字段值,然后再根据ID分组。
下面是内层的原始查询效果:
下面是行转列后查询效果如图:
下面是上面两张图的最终查询语句:
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;
最新文章
- qt 定时器
- 1Z0-053 争议题目解析694
- python中的argparse模块学习
- Android Studio-导入External Libraries
- 轻松学会文本处理工具之二 linux sed命令
- CodeForces 598E Chocolate Bar
- NetCore WebSocket 即时通讯示例
- dedecms判断当前页面是否为首页 织梦设置首页高亮
- 【NOIP2012】开车旅行(倍增)
- 获取多<;a/>;标签id值的点击事件
- python 中的 yield 究竟为何物?生成器和迭代器的区别?
- vue中是使用富文本编辑器vue-quill-edit
- Android Service、IntentService,Service和组件间通信
- java.lang.ClassNotFoundException: com.sun.xml.ws.spi.ProviderImpl解决办法
- Lyft高管的技术团队管理实战
- 【读书笔记】iOS-发布你的促销消息-推动通知
- Spring---Bean使用外部属性文件
- hdu4009最小树形图
- Extjs tree1
- Python实现图片转字符画
热门文章
- 数据结构实习 problem L 由二叉树的中序层序重建二叉树
- 配置spring boot 内置tomcat的accessLog日志
- 【转】asp.net 项目在 IE 11 下出现 “__doPostBack”未定义 的解决办法
- centos mysql忘记密码
- 读懂 ECMAScript 规格
- zabbix自动化运维学习笔记(服务器配置)
- Ubuntu 14.04配置虚拟主机
- ubuntu 14.04 解决apt-get update报错
- Qt5.3中qml ApplicationWindow设置窗口无边框问题
- angularJS---service