【发布时间】:2012-04-18 16:49:28
【问题描述】:
当您执行SELECT * 时,SQL Server 如何确定列的顺序?
我知道“排序依据”对于排序 数据 至关重要,但我希望 列名 保持一致。
注意:我的代码不取决于返回列的实际顺序。我只想知道 SQL Server 是如何决定对列名进行排序的。
在我的团队使用的大约 20 台计算机中,其中一台表现不同。任何差异都值得研究。当我们打开 SQL Server Management Studio 时,所有计算机的列名排序似乎都是相同的。当我们的应用程序进行查询时,我就看到了差异。
我使用的是 SQL Server 2008 和 SQL Server 2008 R2。我的应用程序使用 C# System.Data.SqlClient 来访问数据库。
编辑: 我的问题原来是其中一台计算机被配置为以“sa”身份登录,而不是预期用户。当我们打算让它命中视图时,查询直接命中了表。感谢您帮助了解 sys.columns
【问题讨论】:
-
首先,您应该始终指定列而不使用SELECT *,然后您可以控制它
-
按照您在创建表格时定义的顺序排列
-
@bluefeet 和其他人,这不是最佳实践问题。这是一个关于 SQL Server 如何做出某些决定的好奇问题。
-
@bluefeet 虽然我在很大程度上同意你的观点,但给出这样的陈述的理由或提供解释它的链接会更有帮助。像几乎所有规则一样,也有例外,为什么不使用 select * from a temporal table that only contains the required and no others, or from a view?
-
@Devjosh - 这不是真的。之后可以更改顺序。
标签: sql sql-server-2008 sql-server-2008-r2