所以我有兩個表academy_attempt
& module_attempt
SQL:和返回null
我試圖從每個表中添加兩個值加在一起:
round(((select
sum(`academy_attempt`.`score`)
from
`academy_attempt`
where
((`academy_attempt`.`module_type_id` in (3 , 4, 5, 6))
and (`academy_attempt`.`user_id` = `U`.`id`))) + (select
sum(ifnull(`module_attempt`.`score`, 0))
from
`module_attempt`
where
((`module_attempt`.`module_type_id` in (3 , 4, 5, 6))
and (`module_attempt`.`user_id` = `U`.`id`)))),
2) AS `total_score`
在
academy_attempt的where語句被滿足,在一行返回正確的數量(如果它是單獨的),但是module_attempt沒有任何匹配where語句的值並因此返回null。
不幸的是,這不會變成0,因爲即時通訊猜測你不能做的操作:17 + null = 17
它反而返回null
。
爲了解決這個問題,我有嘗試的IFNULL
聲明,你可以在上面看到,但遺憾的是這並沒有解決問題
我懷疑是有更清晰的方式來做你想要的計算,一個不涉及'select'子句中的多級子查詢。 –
@GordonLinoff不確定是否存在:S它的意思是我不能使用union –