我用PHPMyAdmin(XAMPP)制作了一个本地表。我可以用它做各种各样的事情,但我无法进行永久性的订单更改。
例如,在选项卡操作下,有一个功能Alter Table Order By。但它不会这样做。我可以选择一个字段,选择Ascending或Descending,单击Go,系统甚至会报告查询已成功执行。但是当我随后浏览表格时,一切都没有改变。无论我选择哪个领域。
替代方法也不起作用。只要通过命令
,系统就会让我随心所欲地摆弄桌子 SELECT * FROM table_name ORDER BY field_name
。
但是当我进入
ALTER TABLE table_name ORDER BY field_name
该表不会更改一个iota,而我确实收到了查询已成功执行的消息。
这怎么可能?
答案 0 :(得分:2)
如果你有一个带有主键或非空唯一索引键的InnoDB表,这将无效,因为InnoDB将始终按这些键排序。
这是直接来自MySQL手册ALTER TABLE页面(http://dev.mysql.com/doc/refman/5.5/en/alter-table.html)的文本:
对于包含用户定义的聚簇索引(PRIMARY KEY或NOT NULL UNIQUE索引)的InnoDB表,ORDER BY没有意义。 InnoDB总是根据这样的索引对表行进行排序(如果存在)。