【问题标题】:How to eleiminate NULL with 0 in sql如何在sql中用0消除NULL
【发布时间】:2019-11-20 13:53:13
【问题描述】:

我现在有一个简单的表,当我运行 sql 语句时,它应该使用 mysql 将 NULL 替换为 0

这是我迄今为止尝试过的

SELECT IFNULL(targetbuttonname, 0), sessions.sid, events.datetime, count(*) as num_rows,
  count(distinct sessions.sid) as sessions, 
  sum( targetbuttonname = 'kredyt' ) as num_kredyt, 
  sum(devicetype ='Computer') as num_computer from events 

现在当我运行我的脚本时,它仍然返回 null

这里是演示demo

我的查询语句有什么问题?

【问题讨论】:

标签: mysql sql


【解决方案1】:

使用COALESCE

SELECT coalesce(NULL,0), sessions.sid, events.datetime, count(*) as num_rows, count(distinct sessions.sid) as sessions, 
  sum( targetbuttonname = 'kredyt' ) as num_kredyt, 
  sum( targetbuttonname = 'konto' ) as num_konto,
  sum( targetbuttonname = 'czat' ) as num_czat,
  sum( targetbuttonname = 'video-voice_btns' ) as num_voice,
  sum( targetbuttonname = 'video-close_btn' )  as num_close,
  sum( targetbuttonname = 'video-muted_btn' ) as num_muted,
  sum( targetbuttonname = 'video-play_btn' )  as num_play,
  sum( targetbuttonname = 'video-pause_btn' )  as num_pause,
  sum( targetbuttonname = 'video-replay_btn' ) as num_replay, 
  sum(watchtime) as num_watchtime, 
  sum(devicetype ='Computer') as num_computer from events  INNER JOIN sessions ON (events.sid =sessions.sid) WHERE events.datetime BETWEEN '2019-11-11' AND '2019-11-21'

演示:http://sqlfiddle.com/#!9/3cf3cf/10

IFNULL 也可以使用:

SELECT ifnull(targetbuttonname,0), sessions.sid, events.datetime, count(*) as num_rows, count(distinct sessions.sid) as sessions, 
  sum( targetbuttonname = 'kredyt' ) as num_kredyt, 
  sum( targetbuttonname = 'konto' ) as num_konto,
  sum( targetbuttonname = 'czat' ) as num_czat,
  sum( targetbuttonname = 'video-voice_btns' ) as num_voice,
  sum( targetbuttonname = 'video-close_btn' )  as num_close,
  sum( targetbuttonname = 'video-muted_btn' ) as num_muted,
  sum( targetbuttonname = 'video-play_btn' )  as num_play,
  sum( targetbuttonname = 'video-pause_btn' )  as num_pause,
  sum( targetbuttonname = 'video-replay_btn' ) as num_replay, 
  sum(watchtime) as num_watchtime, 
  sum(devicetype ='Computer') as num_computer from events  INNER JOIN sessions ON (events.sid =sessions.sid) WHERE events.datetime BETWEEN '2019-11-11' AND '2019-11-21'

这里是演示:http://sqlfiddle.com/#!9/3cf3cf/14

【讨论】:

  • 感谢您的帮助,现在当我将日期范围更改为不在表格中的日期时,仍然返回 NAN,表示 null
  • 意思是在控制台上显示为空,在浏览器上显示为 NAN
  • 只需像这样更改日期范围 WHERE events.datetime BETWEEN '2019-04-11' AND '2019-03-21'
  • 好的,但是你必须为每一列做合并!
  • 所以,这就是你想要的:sqlfiddle.com/#!9/332ef1/7??
猜你喜欢
  • 2020-09-04
  • 2017-11-27
  • 1970-01-01
  • 1970-01-01
  • 2016-11-09
  • 2022-06-24
  • 2014-09-22
  • 1970-01-01
  • 2015-11-21
相关资源
最近更新 更多