mysql - 按列字母顺序对 MySQL 表进行排序

标签 mysql

我有一个包含应用程序设置的表,其中包含以下列:idkeyvalue

id 列是自动递增的,但截至目前,我没有使用它,也没有任何外键约束。我正在填充设置并希望对其进行重组,以便它们按字母顺序排列,因为我没有按这种方式放置设置,但按字母顺序重新排序将有助于将相关设置组合在一起。

例如,如果我有以下设置:

ID     KEY             VALUE
======================================
1      App.Name        MyApplication
2      Text.Title      Title of My App
3      App.Version     0.1

我希望所有 App.* 设置按顺序组合在一起,而不必每次都执行 ORDER BY。无论如何,这就是解释。我有 tried the following它似乎并没有改变顺序:

CREATE TABLE mydb.Settings2 LIKE mydb.Settings;
INSERT INTO mydb.Settings2 SELECT `key`,`value` FROM mydb.Settings ORDER BY `key` ASC;
DROP TABLE mydb.Settings;
RENAME TABLE mydb.Settings2 TO mydb.Settings;

这将按照建议复制表格,但不会重组数据。我在这里错过了什么?

最佳答案

重新排序表的简单方法是使用 ALTER TABLE table ORDER BY column ASC。您尝试的查询看起来应该有效,但我知道 ALTER TABLE 查询有效;我经常使用它。

注意:重新排序表中的数据仅在 MyISAM 表中有效且有意义。 InnoDB 始终以 PRIMARY KEY 顺序存储数据,因此不能重新排列。

关于mysql - 按列字母顺序对 MySQL 表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14839814/

相关文章:

php - 如何从输入其他字段中检索 'id' 列

mysql - 在sql表中的重复条目中查找最大值

php - 通过数据库修改用户密码

php - 如何计算每个学生的成绩总和

php - 使用 MySQL 表值作为标题

php - 错误消息: MySQL server has gone away

mysql - 类(class)考勤记录格式SQL查询

MYSQL将行更新为相似行的最大值

mysql - 尽管新连接在负载下失败,但似乎无法达到 MySQL max_connections

php - 使用表中的一列 1 对列 2 进行排序并使用列 1 作为标题