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

fas*_*all 89 sql-server

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

我不想搞乱磁盘上列的物理布局,但我希望在可能的情况下逻辑地将列组合在一起,以便SQL Server Management Studio等工具以方便的方式列出表的内容.

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

vzc*_*czc 73

如果不创建新表,则无法以编程方式(以安全的方式)执行此操作.

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

如果您希望您的列按特定顺序/分组而不改变其物理顺序,则可以创建一个可以是您想要的视图.


小智 42

我想每个人都缺少的是,虽然不是每个人都必须处理在全国和全世界安装的相同软件系统的10年,20年或1000年的实例......我们这些设计商业销售软件的人就是这样做的.因此,我们随着时间的推移扩展系统,通过在需要新功能时添加字段来扩展表,并且因为这些字段确定属于现有表,因此,十多年的扩展,增长,添加字段等到桌子....然后不得不从设计,支持,有时深入研究原始数据/故障排除以调试新的功能错误...这些表...没有你想要的主要信息令人难以置信的加重在第一批字段中看到,当你可能有30-40-50甚至90个字段的表时,在严格规范化的数据库中是.

出于这个原因,我经常希望能做到这一点.但是不能完全按照SQL做的那样,按照我想要的方式为新表构建一个Create Script,将Insert写入它,然后从现有表中删除所有现有的约束,关系,键,索引等等并重命名将"新"表恢复为旧名称,然后读取所有这些键,关系,索引等等....

不仅乏味,耗时,而且......再过五年,还需要再次发生......

它的价值非常接近于大量的工作,但重点是......它不会是我们最后一次需要这种能力,因为我们的系统将继续增长,扩展并获得一个由需要/设计补充.

大多数开发人员从单一系统角度考虑服务于单个公司或非常特定的硬盒市场.

"现成的",但在其市场空间中具有显着进步的设计师和发展领导者将始终不得不一次又一次地处理这个问题.....如果任何人有一个,他们会喜欢创造性的解决方案.这可以很容易地每周节省我的公司十几个小时,只需要不必滚动,或者记住源数据表中"那个"字段的位置....

  • 我不知道为什么他们不能以某种方式抽象出列布局。它不必对列进行物理重新排序!Sql Server 中 PHD 级别及以上工程的数量确实令人惊讶。当您考虑查询计划生成、统计数据、索引的复杂性时,还没有人站起来说“让我们制作一个代表逻辑顺序的表”。`FieldID Guid`、`OrderBy int`。完毕。然后 SSMS 或“SELECT *”使用它。如果您是一名完美的 DBA 并且不想要它,请将其关闭。非常令人沮丧。现在我的桌子足够大了,我不能再暴力破解了。 (5认同)

tag*_*s2k 6

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

如果您不喜欢这样做,您可以随时创建一个表视图,其中的列按您想要的顺序排列并使用它?

编辑:被打了!


Ott*_*tto 5

如果我理解你的问题,你想要影响在现有查询中返回第一,第二,第三等列的列,对吧?

如果您的所有查询都是用SELECT * FROM TABLE- 那么它们将显示在输出中,因为它们是在SQL中布局的.

如果你的查询是用SELECT Field1, Field2 FROM TABLE- 写的那么它们在SQL中的顺序并不重要.