数据格式是这样的一直循环下去,如何把数据库中所有这种为空的数据补齐,补齐内容为紧挨着上几个的proid不为空的值。
该使用怎样的sql语句来执行呢?
ms sql server 数据库
IFNULL(expression1,expression1)
如果表达式不为空,则返回表达式1,反之返回表达式2
update table z set priod=(select priod from (select a.orderID,b.priod from
(select orderID,priod,@i:=(case when priod then @i else @i+1 end) as y from table,(select @i:=0) c) a
left join
(select orderID,priod,@i:=(case when priod then @i else @i+1 end) as y from table,(select @i:=0) c ) b
on a.y=b.y-1
) f where z.orderID=f.orderID) where priod is null
大概就是这么个写法,不知道词法有没有问题,可能需要改一点,思路就是根据priod是否为空分类,这个分类是按照是否连续跟是否为空分类的,,分类后把空的priod值去对应上一段的priod值,最后对应更新,,有个小问题更新到的是每段第一个的值,这个你自己改一下
select isnull(proid,49) from yourtable
查询时为空的列就会自动补49