【问题标题】:SQL Script Table but keeping the order of table with dataSQL 脚本表但保持表与数据的顺序
【发布时间】:2025-11-24 22:55:01
【问题描述】:

有没有人知道 Microsoft SQL 中可以修改表格的方法 通过脚本,但保持表格的顺序。

例如:

表1:

:Column6
:Column5
:Column4
:Column3
:Column2
:Column1

假设我想添加:Column7,但我希望订单仍然在 7、6、5、4、3、2、1

我知道可以删除表并重新创建 或者手动进入设计器,在第7列中添加,在第6列以上插入第7列时会保持顺序。

我想要一种有效的方法来通过脚本来升级客户,订单很重要,因为当手动分析数据时,如果它在 X 订单中已经存在很多年,它就很容易了。 设计器非常适合在列中添加,但会导致很多错误被遗忘或错过输入。

很好奇是否有其他人遇到过类似情况以及他们是如何解决的。

【问题讨论】:

  • 任何时候您选择要查看的列,您都可以随意更改顺序。尝试更改数据库中的顺序不是一个好主意,对性能不利,并且可能导致整个表被删除/重新创建(在幕后)这样做。只需按您想要的顺序选择列即可。
  • @Brad 理解,这将是正常情况下的一种解决方案,但是当使用附加了 10 年并且拥有超过 120 列的现有数据库时,它并不像人们想象的那么容易。我试图在已经很糟糕的情况下消除不断的错误。但我唯一需要坚持的是列的显示顺序。
  • 简短的回答是 - 你不能。要更改表中列的顺序,您需要完全按照您已经知道的方式进行 - 以某种方式重新创建表。为此,您必须处理该表上的依赖关系。这是复杂的脚本,效率不高。
  • 请更好地解释为什么列顺序实际上很重要

标签: sql sql-server


【解决方案1】:

添加列然后使用视图按您想要的顺序获取列怎么样?

alter table t add column7 . . .;

create view v_t as
    select column7, column6, column5, column4, column3, column2, column1
    from t;

这甚至是一个可更新的视图,因此您可以将 insert 列添加到其中而不指定列(我反对)或使用 bulk insert

【讨论】:

    【解决方案2】:

    列排序在 MSSQL 中不应该真正成为一个问题,除非您将列排序用于非常特定的用例。如果在插入或选择语句中用于“插入”目的,您始终可以修复列顺序。作为参考,我相信这个问题之前已经被问过,这里是原始堆栈溢出问题的链接,我会在这里滚动浏览一些答案。

    How to change column order in a table using sql query in sql server 2005?

    【讨论】:

      最近更新 更多