我可以在逻辑上对表中的列进行重新排序吗?

时间:2020-03-05 18:37:37  来源:igfitidea点击:

如果要在Microsoft SQL Server中的表中添加列,是否可以控制该列在查询中的逻辑显示位置?

我不想弄乱磁盘上列的物理布局,但我想在可能的情况下在逻辑上将列分组在一起,以便SQL Server Management Studio之类的工具以方便的方式列出表的内容。

我知道我可以通过进入表的"设计"模式并拖动列的顺序来通过SQL Management Studio执行此操作,但是我希望能够在原始SQL中执行此操作,以便可以执行排序从命令行编写脚本。

解决方案

回答

如果不创建新表,则不能以编程方式(以一种安全的方式)执行此操作。

提交重新排序时,企业管理器的作用是创建一个新表,移动数据,然后删除旧表并将新表重命名为现有名称。

如果希望按特定的顺序/分组排列列而不改变其物理顺序,则可以创建一个可以随心所欲的视图。

回答

当Management Studio执行此操作时,它将创建一个临时表,复制所有内容,删除原始表并重命名该临时表。没有简单的等效T-SQL语句。

如果我们不愿意这样做,则始终可以按所需顺序创建带有列的表格视图,并使用该视图?

编辑:殴打!

回答

如果我理解问题,那么我们想影响现有查询中返回的第一,第二,第三列,对吧?

如果所有查询都使用SELECT * FROM TABLE编写,则它们将以SQL布局显示在输出中。

如果查询是用" SELECT Field1,Field2 FROM TABLE"编写的,则它们在SQL中的排列顺序无关紧要。

回答

可以使用SQL通过直接修改系统表来完成。例如,看这里:

更改表在两者之间添加新列

但是,除非绝对必要,否则我不建议我们使用系统表。