【问题标题】:mySQL how to display NULL as 0mySQL如何将NULL显示为0
【发布时间】: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


【解决方案1】:

用途:

SELECT e.raceEntryRaceName AS raceName, e.raceEntryRaceDate AS raceDate,

Coalesce( ( SELECT COUNT(l.pitstopRaceNumber)
           FROM PitStops l
           WHERE l.pitstopRaceName = e.raceEntryRaceName 
             AND l.pitstopRaceDate = e.raceEntryRaceDate
           GROUP BY l.pitstopRaceNumber
           ORDER BY COUNT(l.pitstopRaceNumber) DESC
           LIMIT 1), 0) AS mostPitstops

FROM .....

【讨论】:

  • 这是完美的。注意:编辑我的帖子以尝试使列更易于理解。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-05
  • 2018-12-28
  • 1970-01-01
相关资源
最近更新 更多