mysql - 如何将单笔订单表转化成累加订单表
PHPz
PHPz 2017-04-17 15:34:01
[MySQL讨论组]

有表1如下

id name money time
1 mike 6 2016-09-01
2 mike 648 2016-09-01
3 leo 488 2016-09-02
4 mike 6 2016-09-03

如何获得以下表2内容

id name amount time
1 mike 6 2016-09-01
2 mike 654 2016-09-01
3 leo 488 2016-09-02
4 mike 660 2016-09-03
PHPz
PHPz

学习是最好的投资!

全部回复(6)
伊谢尔伦

目前自己也想到了一种方式,不知道还有没有更优的相互比较学习一下

select id,name,(select sum(money) from test b where b.name = a.name and b.time <= a.time) as amount,time from test a
巴扎黑

谢邀,试试这句~

    SELECT a.id,a.name,SUM(lt.money)  as amount
    FROM test a JOIN test lt 
    ON a.time >= lt.time//如果时间是递增的可以使用id判断
    GROUP BY a.money
    ORDER BY id
迷茫

谢谢邀请。是要累加amount字段吗?用用户id做条件累加不可以吗?

PHPz

可以看看sql中的union关键字

大家讲道理

感觉sql并不擅长做这种事,放在代码里面运算会比较好。

如果是每个用户一条记录的话,那group by + sum即可。

大家讲道理

这是存储过程

DELIMITER $$
DROP PROCEDURE IF EXISTS `get_totaltab`$$
CREATE PROCEDURE `get_totaltab`()
BEGIN
  declare i int default 1;
  while i < 5
  do
    INSERT INTO  book_copy SELECT max(id),name,sum(money),max(time) from book where name=(SELECT name FROM book where id=i) and id<=i;
    set i = i + 1;
  end while;
END$$
DELIMITER ;
CALL get_totaltab()

这是结果,如下所示

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

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