mysql 如果查询的值为空,让某个数据赋值为0 10
SELECTb.ED_value-a.ED_valueAScFROM(SELECT*FROMt_dataWHEREED_time<='2013-10-01'ANDid=1...
SELECT
b.ED_value-a.ED_value
AS c
FROM
(SELECT * FROM t_data WHERE ED_time <= '2013-10-01' AND
id = 1 ORDER BY ED_time DESC LIMIT 1
) a,
(SELECT * FROM t_data WHERE ED_time <= '2013-10-04' AND
id = 1 ORDER BY ED_time DESC LIMIT 1
) b
WHERE a.id = b.id
首先b.ed_value是大于a.ed_value的值的,假如a.ed_value的值为null时,如何让a.ed_value=0,从而结果变为查询b.ed_value,我写了一个case when;
即把第二行替换为
CASE
WHEN b.ED_value IS NULL THEN a.ED_value
ELSE a.ED_value-b.ED_value
END
但是当b.ed_value有值,而a.ed_value没有值时返回结果仍为null而不是预想中的b.ed_value; 展开
b.ED_value-a.ED_value
AS c
FROM
(SELECT * FROM t_data WHERE ED_time <= '2013-10-01' AND
id = 1 ORDER BY ED_time DESC LIMIT 1
) a,
(SELECT * FROM t_data WHERE ED_time <= '2013-10-04' AND
id = 1 ORDER BY ED_time DESC LIMIT 1
) b
WHERE a.id = b.id
首先b.ed_value是大于a.ed_value的值的,假如a.ed_value的值为null时,如何让a.ed_value=0,从而结果变为查询b.ed_value,我写了一个case when;
即把第二行替换为
CASE
WHEN b.ED_value IS NULL THEN a.ED_value
ELSE a.ED_value-b.ED_value
END
但是当b.ed_value有值,而a.ed_value没有值时返回结果仍为null而不是预想中的b.ed_value; 展开
2个回答
2013-10-09
展开全部
用nvL(null,0)可以不
追问
这个是oracle的函数,这里用的是mysql
追答
那还是用case when 吧,安全点
case when 字段 is not null
then 字段
else 0
end 0;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
结合PHP分步操作就很简单了,if(x="") mysql_query("update $table set x=NULL");
嘿嘿~
嘿嘿~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |