You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP+MySQL多表查询:如何在SELECT中计算累计积分减待扣减积分的剩余值

解决方法

你的原代码存在SQL注入风险,建议后续将直接拼接$_POST['card_number']的逻辑改为参数化预处理查询,避免数据库被恶意攻击。

要新增剩余积分字段,你可以通过子查询提前计算对应用户的总待扣减积分,再用总积分减去该值即可,注意没有待扣减记录时需要用COALESCE函数将空值转为0,避免计算结果为空。同时原查询遗漏了GROUP BY子句,在开启ONLY_FULL_GROUP_BY规则的数据库环境下会执行报错,修改后的完整查询语句如下:

SELECT 
    e.*, 
    SUM(u.points) AS points, 
    SUM(u.cost) AS cost,
    MAX(DATE_FORMAT(u.date_points, '%e/%c/%Y')) AS data,
    SUM(u.points) - COALESCE((
        SELECT SUM(points) 
        FROM `deducted points` AS d 
        WHERE d.id_customer = e.id_customer
    ), 0) AS remaining_points
FROM `customer` AS e 
INNER JOIN `points` AS u ON e.id_customer = u.id_customer 
WHERE e.card_number = '$id'
GROUP BY e.id_customer

内容的提问来源于stack exchange,提问作者Luigi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 20:45:03