1. 程式人生 > >將某個資料庫表字段按照自然順序賦值排序

將某個資料庫表字段按照自然順序賦值排序

現有一張表space_user,表中有個欄位priority,該欄位的順序是亂的,我想把該欄位重新排序,mysql資料庫的sql語句如下:

update space_user target,(
select (@rowNO := @rowNo+1) AS rowno,a.* from
(select * from space_user t where t.`Status`=1 order by t.priority asc,t.CreateTime desc) a,
(select @rowNO :=0) b
) s 
set target.priority=s.rowno 
where target.id=s.id;

其中select * from space_user t where t.`Status`=1 order by t.priority asc,t.CreateTime desc是我要參與排序的記錄。

where target.id=s.id這裡的id是space_user表的主鍵,如果你的主鍵是聯合主鍵的話,就把聯合主鍵都寫上,目的就是確保記錄的唯一性,避免多條記錄賦予了相同的序號。