2013-05-14 51 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

相关问题