【发布时间】:2018-12-11 18:30:15
【问题描述】:
试图让我的代码在没有数据时显示 0 而不是 NULL:
SELECT e.EntryName AS Name, e.EntryDate AS Date,
(SELECT COALESCE(COUNT(l.crashNumber), 0)
FROM Crash l
WHERE l.crashName = e.EntryName
AND l.crashDate = e.EntryDate
GROUP BY l.crashNumber
ORDER BY COUNT(l.crashNumber) DESC
LIMIT 1)
FROM
(SELECT e.EntryName, e.EntryDate
FROM Entry e
GROUP BY e.EntryName, e.EntryDate)
e;
如您所见,我尝试过使用 COALESCE,也尝试过使用 ISNULL。 这个想法是,并非所有种族都有崩溃,因此它们的输出显示为 NULL,尽管我希望当它为 NULL 时它应该显示 0。
【问题讨论】:
-
获取合并以包装整个相关查询,而不是其自身的计数..合并(选择计数...,0)
-
这给了我一个语法错误
-
你需要在
select周围加上括号:coalesce((select count...), 0) -
我只是看着选择中的那个选择就觉得很脏。使用派生表,这样查询就不必为raceentry 中的每条记录执行一次。
-
谢谢 sagi 和 Barmar 以及 xQbert 我不知道那是什么,但我会研究一下,谢谢你的建议!
标签: mysql sql join null subquery