小编典典

当您执行“ SELECT *”操作时,SQL Server如何确定列的顺序?

sql

执行操作时,SQL Server如何确定列的顺序SELECT *

我知道“排序依据”对于排序 数据 必不可少,但我希望 列名 保持一致。

注意:我的代码 取决于返回列的实际顺序。我只想知道SQL Server如何决定对列名称进行排序。

我的团队使用的大约20台计算机中,其中一台的行为有所不同。任何差异都应进行调查。当我们打开SQL Server Management
Studio时,所有计算机的列名顺序似乎都相同。当我们的应用程序进行查询时,就是我看到的区别。

我正在使用SQL Server 2008和SQL Server 2008 R2。我的应用程序使用C#System.Data.SqlClient访问数据库。

编辑:我的问题原来是其中一台计算机被配置为以“
sa”身份登录,而不是目标用户。当我们希望它命中视图时,该查询直接命中该表。感谢您对了解sys.columns的帮助


阅读 189

收藏
2021-04-22

共1个答案

小编典典

column_id从系统角度看,它们是按顺序排列的sys.columns

您可以通过以下方式进行检查:

SELECT column_id, name
FROM sys.columns
WHERE object_id = Object_id('MyTableName')
ORDER BY column_id

编辑

这是给Dems的。您应该在更大的表上进行测试,但是看起来它使用表中定义的顺序,而不是索引:

CREATE TABLE #T (cola int, colb int, colc int)

INSERT INTO #T
VALUES
(1,2,3),
(2,3,4),
(4,5,6)

SELECT * FROM #T

CREATE INDEX ix_test ON #T (colb, colc, cola)

SELECT * FROM #t
WHERE colb > 0

DROP TABLE #T
2021-04-22