如果要向Microsoft SQL Server中的表添加列,是否可以控制该列在查询中的逻辑显示位置?
我不想弄乱磁盘上列的物理布局,但是我想在可能的情况下在逻辑上将列分组在一起,以便像SQL Server Management Studio这样的工具以一种方便的方式列出表的内容。
我知道我可以通过进入表的“设计”模式并拖动列的顺序来通过SQL Management Studio执行此操作,但是我希望能够在原始SQL中执行此操作,以便执行顺序从命令行编写脚本。
如果要向Microsoft SQL Server中的表添加列,是否可以控制该列在查询中的逻辑显示位置?
我不想弄乱磁盘上列的物理布局,但是我想在可能的情况下在逻辑上将列分组在一起,以便像SQL Server Management Studio这样的工具以一种方便的方式列出表的内容。
我知道我可以通过进入表的“设计”模式并拖动列的顺序来通过SQL Management Studio执行此操作,但是我希望能够在原始SQL中执行此操作,以便执行顺序从命令行编写脚本。
Answers:
我认为这里每个人都缺少的是,尽管并不是每个人都必须处理在整个国家和世界范围内安装的同一软件系统的10、20或1000个实例……设计商业销售软件的我们中的每个人都必须这样做。结果,随着时间的推移,我们扩展了系统,通过在需要新功能时添加字段来扩展表,并且当确定这些字段确实属于现有表时,因此,经过十多年的扩展,增长,添加字段等到表格...。然后不得不使用这些表格,从设计到支持,有时甚至是挖掘原始数据/进行故障排除以调试新的功能错误....令人难以置信的是,没有所需的主要信息在前几个字段中看到
出于这个确切的原因,我经常希望我可以这样做。但是缺少精确执行SQL的功能,按照我想要的方式为新表构建创建脚本,向其写入插入,然后从现有表中删除所有现有约束,关系,键,索引等,然后重命名将“新”表恢复为旧名称,然后读取所有这些键,关系,索引等...。
不仅繁琐,耗时,而且……再过五年,将需要再次发生……。
它非常值得进行大量工作,但是重点是……这将不是我们最后一次需要这种能力,因为我们的系统将继续增长,扩展,并获得由需要/设计增加。
大多数开发人员从为单个公司或非常特定的硬盒市场提供服务的单一系统角度考虑。
市场上那些“现成的”但有进取心的设计师和开发领导者将总是不得不处理这个问题,一遍又一遍...... 这可以轻松地每周为我的公司节省十几个小时,而不必滚动或记住源数据表中“那个”字段的位置。
FieldID Guid
,OrderBy int
。做完了 然后SELECT *
使用SSMS或使用它。如果您是理想的DBA并不想使用它,请关闭它。非常沮丧。现在我的桌子已经足够大了,我再也无法蛮力了。
有一种方法,但这只是查询本身的暂时方法。例如,
假设您有5张桌子。表被称为T_Testing
名字,姓氏,电话号码,电子邮件和Member_ID
您希望它列出其ID,然后是“姓氏”,“名字”,“电话”和“电子邮件”。
您可以按照“选择”进行操作。
Select Member_ID, LastName, FirstName, PhoneNumber, Email
From T_Testing
除此之外,如果由于某种原因,您只想让姓氏显示在名字之前,您也可以按照以下步骤进行操作:
Select LastName, *
From T_Testing
您唯一要确定的是,如果要使用Where或OrderBy,则需要将OrderBy或Where函数表示为Table.Column。
例:
Select LastName, *
From T_Testing
Order By T_Testing.LastName Desc
我想这对我有所帮助,因为我需要自己做。
如果不重新创建整个表,则无法更改列的顺序。如果只有几个数据库实例,则可以为此使用SSMS(选择表并单击“设计”)。
如果您有太多实例需要手动处理,则应尝试以下脚本:https : //github.com/Epaminaidos/reorder-columns