--记录当前离上一个最近的坐标值
set @curX=0
set @curY=0
--排序号
set @i=1
--循环判断是否还有更新完排序号的记录
while exists(select top 1 myname from MyPosTable where orderid is null)
begin
--求出第一个离原点最近的点
select top 1 @myname=myname,@curX=x,@curY=y from MyPosTable
where orderid is null
order by SQRT(SQUARE(abs(x-@curx))+SQUARE(abs(y-@cury)))
--更新序号
update MyPosTable set orderid=@i where myname=@myname
--下一序号
set @i=@i+1
end