【发布时间】:2011-02-25 10:23:19
【问题描述】:
我需要移动现有列的位置(以获得更好的可见性)。
如何在不影响数据的情况下做到这一点?
【问题讨论】:
-
不是骗子:第一个是关于交换数据的,第二个是关于“sqlyog”的。
-
一种保存方法是使用 PHPMyAdmin 的“移动列”功能:stackoverflow.com/a/34682789/1066234
标签: mysql
我需要移动现有列的位置(以获得更好的可见性)。
如何在不影响数据的情况下做到这一点?
【问题讨论】:
标签: mysql
Modify 也可以。看看:
ALTER TABLE foo MODIFY bar bartype AFTER baz;
【讨论】:
我知道的唯一方法是更改列。您将首先使用SHOW CREATE TABLE 提取列定义并发出ALTER TABLE:
ALTER TABLE foo
CHANGE COLUMN bar
bar COLUMN_DEFINITION_HERE
FIRST;
或者如果你想要它在某个其他列之后:
... AFTER OTHER_COLUMN;
【讨论】:
BEFORE 时遇到了问题,而我使用了FIRST
ALTER TABLE ... MODIFY 更可取,因为它不会以语法格式再次要求您输入列名,您可以不小心重命名列,而 MODIFY 不会.
【讨论】:
基于@VKGS 的回答:
如果您的表名为 language 是:
| description | name |
|---------------------|------------------|
| fbi agent | jane |
|---------------------|------------------|
| mi6 agent | kurt |
|---------------------|------------------|
而你想让列名成为第一列或描述之前,执行这个:
ALTER TABLE language MODIFY description varchar(100) AFTER name;
不要忘记列的类型。
【讨论】:
NULL / NOT NULL,DEFAULT value,COMMENT...
这里是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 Column-definition FIRST;
【讨论】:
转到Structure 并单击Move Columns,然后只需拖动列即可重新排列。
【讨论】: