oracle 中update 和 order by 一起使用,先排序再更新 row_number 分析函數

 

在國產達夢數據庫和oracle數據庫中使用sql如下

update 
	(select *, row_number() over(order by menu_sequence) rowno from sys_menu_system where menu_pid='018cab4cc7768c1651b640571d70aaf4' order by menu_sequence)
set menu_sequence = rowno

 

 

在國產數據庫  虛谷中有所不同,上述sql不能使用,使用如下sql

	declare
	begin
	for i in ( select *, row_number() over(order by menu_sequence) `rowno` from sys_menu_system where menu_pid='018cab4cc7768c1651b640571d70aaf4' order by menu_sequence ) loop
		update sys_menu_system set menu_sequence = i.`rowno` where id = i.id;
	end loop;
	end;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章