请教一个mysql查询的问题
黄舟
黄舟 2017-04-17 16:22:29
[MySQL讨论组]

设一个表中记录了用户的积分变动,默认为加

主键 用户id 变动日期 变动数值
1 0001 2017-01-01 00:00:00 10
2 0002 2017-01-01 04:10:00 20
3 0001 2017-02-01 05:04:00 400
4 0001 2017-02-05 00:00:00 10
5 0002 2017-04-01 00:00:00 30

而我如果需要查出各用户各时间段的资金变动总和,如下表所示

主键 用户id 变动日期 变动数值 变动总和
1 0001 2017-01-01 00:00:00 10 10
2 0002 2017-01-01 04:10:00 20 20
3 0001 2017-02-01 05:04:00 400 410
4 0001 2017-02-05 00:00:00 10 420
5 0002 2017-04-01 00:00:00 30 50

这种sql改如何书写?我用的是mysql5.6,结果集顺序没有要求。

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(3)
巴扎黑

select sum(变动数值) from table where 变动日期 >=yymmdd and 变动日期 <=yymmdd group by 用户id

天蓬老师

这样的需求建议到程序中处理性能会好很多

当然mysql 也可以直接查询出结果

select a.*,sum(b.变动数值) as 变动总和 from table a left join table as b on a.用户id=b.用户id and a.变动日期>=b.变动日期 group by a.主键
怪我咯

select ccc.* ,
if(@lag_uuid = 用户id ,@lag:=@lag+变动数值,@lag:=变动数值) 变动总和,
(@lag_uuid := 用户id) lag_uuid

from
(SELECT * FROM tbl_ WHERE 1=1 order by 用户id ) ccc,(select @lag:=0,@lag_uuid:=null) tb_lag

order by ccc.id

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号