我有一个名为 expenses 的表,它包括以下几列:
ID, amount_1, amount_2, amount_1_paid, amount_2_paid, total
amount_x_paid
是一个 TINYINT
,所以它用于复选框。
我想做的是根据amount_x_paid
值(1,0)计算总数
让我们说:
amount_1 = 100
amount_2 = 200
amount_1_paid = 1
amount_2_paid = 0
这应该计算
total = 100
如何在 php 中实现这一点?
php 文件将是一个计划任务作业,每天运行一次以计算总数。
这可以解决问题:
SELECT
FORMAT(
SUM(
CASE
WHEN amount_1_paid = 0 THEN (total + amount_1)
ELSE (total - amount_1)
END
),
0
)
AS total
FROM
expenses
WHERE ID = '1';
我怎样才能把它放在一个循环中并更新所有记录?
最佳答案
要根据 amount_x_paid
列选择 amount_
字段,您可以使用 CASE
表达式。像这样:
SELECT
CASE
WHEN amount_1_paid = 1 THEN amount_1
WHEN amount_2_paid = 1 THEN amount_2
ELSE 0
END AS Amount,
...
FROM tablename;
如果您要查找这些金额的总和,请在子查询中使用它:
SELECT
SUM(Amount) AS Total,
...
FROM
(
SELECT
CASE
WHEN amount_1_paid = 1 THEN amount_1
WHEN amount_2_paid = 1 THEN amount_2
ELSE 0
END AS Amount,
...
FROM tablename
) AS sub;
关于php - 使用 bool 值php计算mysql中的列总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16058660/