我知道这个问题被问了很多,但不知道我是否应该使用COALESCE
ifnull
或其他东西。
我有以下查询:
select (amount-
(select (sum(l.amount_sum)-sum(lr.reward)) as total
from logs l
join logs_rewards lr on l.id = lr.related_log_id
where l.agent_id = '1'))
as balance
from logs_payments
where agent_id = '1'
现在的问题是,如果查询agent_id
中不存在logs_payments
将不会返回行,但我希望它做的是无论如何返回结果,但如果amounts
不存在,将其设置为 0 用于子查询
现在我考虑过查询另一个表并像这样加入结果:
select (lp.amount-
(select (sum(l.amount_sum)-sum(lr.reward)) as total
from logs l
join logs_rewards lr on l.id = lr.related_log_id
where l.agent_id = '1'))
as balance
from agents a
join logs_payments lp on lp.agent_id = a.id
where a.id = '1'
但这也没有用。我应该采取什么方法来解决这个问题?
为了清楚起见,我希望此查询始终返回子查询的金额结果,如果不存在金额仍然返回结果,但将其计算为 0。