这是表格结构
在这里,我使用付款类型来确定交易类型
1-预付款
2-付款
这是样本数据
SELECT SUM(upay_amount)
FROM user_payment
WHERE upay_status=1 AND upay_id >
(
SELECT MAX(upay_id) FROM user_payment WHERE upay_usr_id=3 AND upay_status=2
)
AND upay_usr_id=3
GROUP by upay_usr_id
输出效果很好
438359
但是当我尝试概括查询时,我被卡住了,导致负责返回状态为2的upay_id最大值的子查询在单用户情况下仅返回一行,因为我指定了用户ID
但是怎么办?如果我想退回每个用户代替的一次预付款??
您可以将子查询移至FROM并添加GROUP BY用户ID,以查找每个用户的最大值。然后加入它,并在WHERE中使用MAX。像这样
SELECT SUM(upay_amount)
FROM user_payment up INNER JOIN (
SELECT upay_usr_id, MAX(upay_id) grMax
FROM user_payment
WHERE upay_status=2
GROUP BY upay_usr_id
) gr ON up.upay_usr_id=gr.upay_usr_id
WHERE upay_status=1 AND upay_id > gr.grMax
GROUP BY up.upay_usr_id
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句