如何重新排列Mysql列?

Yet*_*eti 61 mysql

我需要移动现有列的位置(以获得更好的可见性).

如何在不影响数据的情况下完成?

VKG*_*KGS 61

修改也有效.看一看:

ALTER TABLE foo MODIFY bar bartype AFTER baz;
Run Code Online (Sandbox Code Playgroud)

  • 如果您没有在 alter 语句中指定它,您也会丢失默认值。 (3认同)
  • 实际上,这应该是公认的答案. (2认同)
  • 这有效,但请注意(至少在我的设置中)移动列会从该列中删除任何 auto_increment 设置。 (2认同)

sou*_*rge 51

我知道的唯一方法是更改​​列.您将首先使用SHOW CREATE TABLE并发出以下内容来提取列定义ALTER TABLE:

ALTER TABLE foo
CHANGE COLUMN bar
bar COLUMN_DEFINITION_HERE
FIRST;
Run Code Online (Sandbox Code Playgroud)

或者,如果您想要某个其他列之后:

... AFTER OTHER_COLUMN;
Run Code Online (Sandbox Code Playgroud)

  • 在MySQL语法中没有BEFORE [link](http://dev.mysql.com/doc/refman/5.7/en/alter-table.html),只有AFTER和FIRST (7认同)
  • 或者`......在OTHER_COLUMN之后 (5认同)
  • 如果你只想重新排序列`ALTER TABLE ... MODIFY`是优选的,因为它不会再以句法格式请求你的列名,你可以意外地重命名一列,而`MODIFY`不会. (3认同)

小智 6

  1. 更改表table_name首先修改column_name column_datatype;
  2. 更改表table_name修改column_name column_datatype在other_column_name之后;