![](/img/trans.png)
[英]How can I solve gaps and islands problem in mysql for gaps with zero values and islands with non-zero values
[英]how to replace the zero values with the previous non-zero value in MySQL?
您可以使用內聯查詢:
select
pk,
case when val1 = 0
then (select val1 from mytable t1 where t1.pk < t.pk and t1.val1 != 0 order by pk desc limit 1)
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, val1, @previous as previous_v, @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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.