从 MySQL 查询中达到字段金额总和的 Return 行

Return rows where sum on a field amount is reached from MySQL query

我对 MySQL 的了解很基础。我想建立一个查询 return 所有行当达到总和给定的金额值

table:

id name     expirydate  amount
1  name1    11-08-16     0.20     
2  name2    10-08-16     1.50
3  name3    08-08-16     1.00

我需要 id 3, 2 按到期日排序的结果。

您可以使用 MySQL user defined variables

完成此操作
SET @n := 1.2;

SELECT 
 t.id,
 t.name,
 t.expirydate,
 t.amount
FROM 
(
    SELECT 
    *,
    @bal := @bal + amount AS runningAmount,
    IF(@bal >= @n, @doneHere := @doneHere + 1 , @doneHere) AS whereToStop
    FROM table_amount
    CROSS JOIN (SELECT @bal := 0.0 , @doneHere := 0) var
    ORDER BY expirydate
) AS t
WHERE t.whereToStop <= 1

看到一个WORKING DEMO

如果您使用的是PHP,您可以使用以下循环从查询中获取所有结果。查询将得到结果,通过 while 循环我们可以显示所有记录。

   <?php
 $query =   mysqli_query($db, "SELECT * FROM table WHERE amount >= 1.2 ORDER BY expirydate");
while($array = mysqli_fetch_array($query)){
        echo $row['name'].' '.$row['amount'].' '.$row['expirydate'].'<br>';


      }
?>