业务需求:有个部门表的数据,设置同一机构(pid相同)下的部门按顺序(sort)递增排列。
sql语句
使用 PARTITION BY 分区函数实现
UPDATE
表名 t1
SET
t1.sort =
(
SELECT
rn
FROM
(
SELECT
id, row_number() OVER (PARTITION BY t2.pid ORDER BY t2.id) rn
FROM
表名 t2
) t3
where
t1.id = t3.id
)
查看执行结果
如果是从0开始排序的话,SELECT rn-1 即可!