热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在MySQL中将零值替换为先前的非零值?

本文介绍了如何在MySQL中将零值替换为先前的非零值的方法,包括使用内联查询和更新查询。同时还提供了选择正确值的方法。

免责声明:这不是重复的问题。发布之前我已经研究了

如何在MySQL中将零值替换为先前的非零值?

红色圆圈中的值应为“ 2”,因为先前的非零值是数字2。如何在mysql更新查询中做到这一点?如您所见,还有其他具有相同零值的行需要具有先前的非零值。


您可以使用内联查询:

select
pk,case when val1 = 0
then (select val1 from mytable t1 where t1.pk else val1
end val1,val2,val3,received_date
from mytable t

,

如果只想选择正确的值,请使用

select pk,val1,@previous as previous_v,@previous := val1
from your_table
cross join (select @previous := 0) p
order by pk

如果您还想更新表,请使用

update your_table t
join
(
select pk,@previous := val1
from your_table
cross join (select @previous := 0) p
order by pk
) tmp on tmp.pk = t.pk
set t.val1 = previous_v
where t.val1 = 0

SQLFiddle demo


推荐阅读
author-avatar
Mr何冰_874
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有