我可以在逻辑上对表中的列进行重新排序吗?
时间: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通过直接修改系统表来完成。例如,看这里:
更改表在两者之间添加新列
但是,除非绝对必要,否则我不建议我们使用系统表。