簡體   English   中英

如何用 MySQL 中以前的非零值替換零值?

[英]how to replace the zero values with the previous non-zero value in MySQL?

免責聲明:這不是一個重復的問題。 發帖前我有研究

在此處輸入圖片說明

紅色圓圈中的值應該有“2”值,因為之前的非零值是數字 2。如何在 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

SQLFiddle 演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM