2013-05-14 48 views
1

我用我的PHPMyAdmin(XAMPP)發了一個本地表。我可以用它做各種事情,但我不能做出永久的訂單更改。爲什麼PHPMyAdmin不能有效地改變我的表格?

例如,在標籤Operations下,有Alter Table Order By功能。但它不會這樣做。我可以選擇一個字段,選擇升序或降序,單擊開始,系統甚至會報告查詢已成功執行。但是當我隨後瀏覽表格時,沒有任何改變。無論我選擇哪個字段。

另一種方法也不起作用。只要系統通過命令

SELECT * FROM table_name ORDER BY field_name,系統將讓我匆匆忙忙地將表格全部打開。

但是,當我進入

ALTER TABLE table_name ORDER BY field_name

表不改變一丁點,而我得到的查詢已成功執行的消息。

這怎麼可能?

回答

2

如果你有一個主鍵或非空唯一索引鍵的InnoDB表,這將不起作用,因爲InnoDB總是按這些鍵排序。

這裏是直接從MySQL手冊ALTER TABLE的網頁文本(http://dev.mysql.com/doc/refman/5.5/en/alter-table.html):

ORDER BY沒有意義對於包含用戶定義的聚集索引InnoDB表(PRIMARY KEY或NOT NULL UNIQUE索引) 。 InnoDB總是根據這樣一個索引對錶格行進行排序(如果存在的話)。

+0

好的,謝謝,特別是對於快速回復。我必須說,我發現PHPMyAdmin說查詢已經成功執行,但在實踐中根本沒有執行,但我確實找到了解決方法:刪除主鍵字段。對於其他讀者來說:InnoDB是MySQL 5.5以來的默認存儲引擎。請參閱http://en.wikipedia.org/wiki/InnoDB。乾杯,邁克! – 2013-05-14 18:03:01

+0

@FrankConijn查詢已執行,但沒有任何效果。這不是PHPMyAdmin的問題,因爲它只是報告MySQL告訴它(查詢已執行)。你可以直接在MySQL中運行命令,你會看到相同的結果。我想我不明白爲什麼你會掛在某個非主鍵非唯一鍵列的順序上。這只是爲了您在PHPMyAdmin中的顯示方便嗎?如果是這樣,這不是刪除主鍵字段的合理原因,因爲在查詢數據庫時,字段排序並不重要。 – 2013-05-14 18:15:17

+0

這不僅僅是爲了方便展示。我需要在兩個變量之間進行斯皮爾曼的rho計算,其中一個是受訪者的姓氏(如果更多姓氏具有相同的姓氏,如約翰遜02那樣包含一個附加數字)。爲此,我必須按字母順序排列姓氏並給他們一個等級號碼。那第一步從來沒有奏效(並花費我幾個小時......),直到你解釋爲什麼。給姓氏賦予正確等級的最簡單的方法是刪除主鍵,按姓氏排序並重新插入主鍵。 – 2013-05-15 01:14:11

相關問題