1.mysql有张表,id,order_id,order_no,id是唯一的,一条数据一个id,order_id不唯一,一个order_Id会有多条数据,order_no是顺序。
2.现在order_no有些是有值的,且都是1,其余都为空,一个order_id有多个order_no,怎么将那些一个order_id下的order_no为空的数据进行赋值,例如2345之类。谢谢
思路:
同一个order_id组内排序,把排序结果赋值给order_no
-- 设置局部变量、接受保存变量参数
set @rownum=0;
select id, name, @rownum as rownum from tset1 order by id,least(0,@rownum:=@rownum+1);
-- 顺序赋值
UPDATE tset1 set kkl=@rownum:=@rownum+1
with t1 as (
select 1234 id ,2345 order_id , 1 order_no union all
select 1235 id ,2345 order_id , null order_no union all
select 1236 id ,2345 order_id , null order_no union all
select 1237 id ,2343 order_id , 1 order_no union all
select 1238 id ,2343 order_id , null order_no )
select id ,order_id, case when order_no = ro then order_no else ro end order_no
from (
select id ,order_id ,order_no, row_number()over(partition by order_id ) ro
from t1) t1