2015-11-09 64 views
0

我有一個項目表,其中一個領域是'顯示順序'字段,控制項目將顯示給用戶的順序。我希望將整個表中此字段的所有值設置爲表格按特定標準集排序時所獲得的值 - 例如,按字母順序排列。 音符 - 我不能與ALTER TABLE items ORDER BY item_name例如改變表的順序;該表必須實際保留其原始順序。mysql更新爲特定的訂購,在一個查詢

如果我們可以假設表items包含項目名稱和現場disp_order控制顯示順序的字段item_name,在本質上我想要做的這是什麼(對於字母排序):

SET @i:=0; 
UPDATE items SET disp_order=(SELECT @i:[email protected]+1 FROM items ORDER BY item_name); 

顯然我不能這樣做,因爲我正在修改我正在選擇的表格。但有什麼辦法可以在一個聲明中做到這一點?

回答

2

ORDER BY也適用於更新查詢,所以乾脆:

SET @i:=0; 
UPDATE items SET [email protected]:[email protected]+1 ORDER BY item_name; 
+0

優秀! 我錯過了手冊中莫名其妙。謝謝 ! –