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

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

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

【问题讨论】:

    标签: mysql 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 工作stackoverflow.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,不幸的是它不是拖放操作。

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

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

      【讨论】:

        【解决方案7】:

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

        【讨论】:

          【解决方案8】:

          较新版本的简单方法:

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

          【讨论】:

            猜你喜欢
            • 2011-02-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-04-24
            • 2016-06-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多