Php mysql中的多行求和

Php mysql中的多行求和,php,mysql,Php,Mysql,我有一个mysql表名请求,该请求包含以下字段 id mem_id amount status rtype 1 11 200 0 ph 2 12 200 0 ph 3 13 400 0 ph 4 14 200 0 ph 5 15 300 0 ph 我想对这个表做的是,如果用户插入另一个数据,并且rtype=gh和amount=600,我希望mysql从请求

我有一个mysql表名请求,该请求包含以下字段

id mem_id amount status rtype
1   11     200     0     ph
2   12     200     0     ph
3   13     400     0     ph
4   14     200     0     ph
5   15     300     0     ph
我想对这个表做的是,如果用户插入另一个数据,并且rtype=gh和amount=600,我希望mysql从请求表中选择并合计金额,以获得新的请求金额,即600,就像点对点捐赠一样

结果可能看起来像

id mem_id amount status rtype
1   11     200     0     ph
2   12     200     0     ph
4   14     200     0     ph

我有这个查询,但它从我的phpmyadmin返回一个空结果

SELECT id, mem_id, SUM(amount), status, rtype FROM tbl_request WHERE rtype = 'ph' AND status = 0 AND amount = 6000 GROUP BY id;
请帮忙


提前感谢

您可以使用mysql变量进行累积求和

SELECT 
    *
FROM
    (SELECT @var:=600) a,
    (SELECT 
        tbl_request.*,
            if((@var:=@var - amount) > 0, amount, amount + @var) as my_amount
    FROM
        tbl_request 
    WHERE
        rtype = 'ph' AND status = 0
    ORDER BY amount ASC) AS b
WHERE
    my_amount > 0


从这里:

您可以使用mysql变量进行累积求和

SELECT 
    *
FROM
    (SELECT @var:=600) a,
    (SELECT 
        tbl_request.*,
            if((@var:=@var - amount) > 0, amount, amount + @var) as my_amount
    FROM
        tbl_request 
    WHERE
        rtype = 'ph' AND status = 0
    ORDER BY amount ASC) AS b
WHERE
    my_amount > 0


从这里:

我不明白为什么您要按
id
列进行分组,因为该列似乎是表的主键。WHERE子句中的amount=6000将始终查看值“6000”是否出现在字段“amount”中,而不是sum中,如果请求表中只有几条记录(可能是20条记录),然后你可以把所有的记录提取到php数组/对象中并进行计算实际上我是mysql的新手,我可能不知道何时以及如何使用where子句,但是我在网上看到的大部分教程都使用where子句,请你告诉我如何以数组格式@sadasivami删除组我不明白为什么要按
id
列进行分组,因为该列似乎是表的主键。WHERE子句中的amount=6000将始终查看值“6000”是否出现在字段“amount”中,而不是sum中,如果请求表中只有很少的记录(可能是20条记录),然后您可以将所有记录提取到php数组/对象中并进行计算实际上我是mysql新手,我可能不知道何时以及如何使用where子句,但我在网上看到的大部分教程都使用where子句,请您为我指出如何以数组格式@sadasivami删除组的正确方向根据我的查询中的id,它仍然返回null result我实现了your代码,它可以工作,但是如果我想要使用的变量不是静态的,比如我正在使用的,我从用户那里获取变量,可能是任何数字如果我用php捕获变量,我将如何在your sql命令中用@var:=600i替换它我实现了your代码,并且它可以工作,但是如果我想要使用的变量不是静态的,比如我正在使用的,我从用户那里得到的变量可能是任何数字如果我用php捕获变量,我将如何在YourSQL命令中用@var:=600替换它