我知道這個問題被問了很多,但無法弄清楚,如果我應該使用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
好吧,我會,但你的答案和JW一樣有幫助,它指出了我的正確方向。你的代碼不起作用(即使我修復了你在那裏出現的語法錯誤),所以我沒有接受它,並會接受我自己的,對不起,再次感謝幫助! –