重新排序列的简单方法?

Posted

技术标签:

【中文标题】重新排序列的简单方法?【英文标题】:Easy way to re-order columns? 【发布时间】:2011-05-04 23:22:41 【问题描述】:

我正在处理数据库。在大多数表格上,列顺序不是我所期望的,我想更改它(我有权限)。例如,primary_key 的id 列很少是第一列!

有没有用 phpMyAdmin 移动列的简单方法?

【问题讨论】:

【参考方案1】:

使用ALTER TABLE ... MODIFY COLUMN 语句。

ALTER TABLE table_name MODIFY COLUMN misplaced_column INT(11) AFTER other_column;

【讨论】:

我需要 col 类型信息吗? - INT(11) 是的,需要指定列类型 如果 misplaced_column 不是 INT(11) 类型怎么办。我正在尝试重新排序 DATETIME。我尝试将“INT(11)”替换为“DATETIME”,但没有成功。 是的,我在ALTER TABLE participant COLUMN last_update DATETIME AFTER home_state 上收到错误1064 ...但MODIFY 工作***.com/a/10256880/3018212【参考方案2】:

另一种方法是:

#CREATE TABLE original (
#    id INT
#    name TEXT
#    etc...
#);

CREATE TABLE temp (
    name TEXT
    id INT
    etc...
);

INSERT INTO temp SELECT name, id FROM original;

DROP TABLE original;

RENAME TABLE temp TO original;

【讨论】:

仅当您想一次性进行其他修改,例如类型、名称、顺序等时 为什么要像这样复制所有数据?什么时候不需要?效率低下,你只是自找麻烦。 @Tomalak,例如,如果您想从 2 个不同的表同步模式,但保留所有数据。这些表有很多不同之处。这就是Toad 的工作原理 @Petah:好的,但他只是想重新排序他的列。而已。就是这样。 @Tomalak,Eran 的回答满足了这一要求。但是为了完整起见,对于以后偶然发现这个问题的任何人,我的回答可能对他们有用。因此我说“另一种方法是……”的原因【参考方案3】:
ALTER TABLE `table`
CHANGE COLUMN `field` `field` 
INT(11) AFTER `field2`;

【讨论】:

【参考方案4】:

这里是 sql 查询ALTER TABLE table_name MODIFY COLUMN misplaced_column Column-definition AFTER other_column; Column-definition 是完整的列定义。如果您使用 phpmyadmin,要查看列定义,请单击结构选项卡。然后单击所需列上的更改链接。然后用我们的修改任何东西点击保存。它会显示你的sql。复制 sql 并在末尾添加 *AFTER other_column*。一切都会过去的。

如果你想把 *misplaced_column* 放到第一个位置,那么 ALTER TABLE table_name MODIFY COLUMN misplaced_column 列定义优先;

【讨论】:

这是完美的,甚至可以移动datetime 列。谢谢@zahid9i【参考方案5】:

由于您提到了 phpMyAdmin,现在有一种方法可以在最新版本(4.0 及更高版本)中重新排序列。

转到表的“结构”视图,单击相应字段上的编辑(或更改)按钮,然后在“移动列”下选择您希望字段移动到的位置。

【讨论】:

没有这样的选择。 @Foreever 你用的是什么版本? 那是你的问题。您需要下载最新版本。【参考方案6】:

SQL Maestro for mysql 提供了重新排序字段的工具以及 GUI,不幸的是它不是拖放操作。

    打开表格视图 打开属性选项卡 点击边栏中的重新排序字段 单击要移动的字段,然后单击向上或向下的绿色箭头 点击确定提交数据库更新

可能还有其他程序和实用程序可以执行此操作。我从搜索中找到了这个帖子,所以我想我会分享我为其他人找到的内容。

【讨论】:

【参考方案7】:

在 phpMyAdmin 版本 3.5.5 中,转到“浏览”选项卡,然后将列拖到您喜欢的位置以重新排序(例如,如果您有名为 A、B、C 的列,您只需拖动列 C在 A 和 B 之间重新排序为 A,C,B)。

【讨论】:

【参考方案8】:

较新版本的简单方法:

    打开要重新排序的表。 转到结构选项卡。 选择移动列链接。 根据需要对列重新排序。

【讨论】:

以上是关于重新排序列的简单方法?的主要内容,如果未能解决你的问题,请参考以下文章

组合不同(冗长)SQL 语句的列的最简单方法 - MSSQL

ASP.net Razor 应用程序:使用 Bootstrap、CSS 或 JS,是不是有一种简单的方法可以左右移动整个表格列?即时重新排序列

Excel如何根据某列的重新排序而进行整行的移动?

简单排序方法

重新排序包含跨列的 QTableView 行

关于冒泡排序的最简单方法和进一步的优化