SQL 实现阶段性统计用于阶段性排行榜

本文介绍了一种使用SQL语句(REPLACE INTO...SELECT)来统计指定时间段内用户的积分消费情况的方法,该方法适用于月销售排行等功能。通过示例代码展示了如何从一个表中选取数据并更新到另一个表中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个功能主要用于月销售排行,周销售排行等。

用到的SQL语句

INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name [(col_name,...)]
    SELECT ...
    [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]

REPLACE [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name [(col_name,...)]
    SELECT ...
    [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
示例

$stardate = strtotime(date('Y-m'));
$enddate = TIMESTAMP;
$sql = "REPLACE INTO ".DB::table('common_month_credit')." (`uid`, `extcredits5`, `time`, `dateline`) 
SELECT `cl`.`uid`, SUM(`cl`.`extcredits5`) AS extcredits5, {$this->date}, {$enddate}
FROM ".DB::table('common_credit_log')." `cl` WHERE `cl`.`dateline` BETWEEN {$stardate} AND {$enddate} GROUP BY `uid` LIMIT 0, 500";
DB::query($sql);

上面这段代码来自项目代码片段,目的是统计当月的积分消费情况。用于下一步做月销售排行。

关于INSERT ……SELECT 和REPLACE……SELECT 语句的区别,可以查手册或搜索。

使用INSERT...SELECT,可以快速地从一个或多个表中向一个表中插入多个行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值