从 MySQL 查询中达到字段金额总和的 Return 行
Return rows where sum on a field amount is reached from MySQL query
我对 MySQL 的了解很基础。我想建立一个查询 return 所有行当达到总和给定的金额值
- 给定值:1.20
- 要求和的字段:金额
- 按到期日排序
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>';
}
?>
我对 MySQL 的了解很基础。我想建立一个查询 return 所有行当达到总和给定的金额值
- 给定值:1.20
- 要求和的字段:金额
- 按到期日排序
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>';
}
?>