【发布时间】:2012-12-30 07:41:18
【问题描述】:
我知道这个问题被问了很多,但不知道我是否应该使用 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。
【问题讨论】: