为了更好地理解 SQL Server 查询处理器,我一直在思考ORDER BY
子句是如何工作的,以及 SQL Server 如何提供结果。
对于任何给定的数据集,SQL Server 似乎将以完全相同的顺序提供结果,这些数据集保持不变并且永远不会改变。一旦您引入任何类型的不确定性,例如开发人员更改某些内容,就不能再期望结果的顺序是相同的。
简单地以相同的顺序查看结果,每次按下F5
并不能保证您期望的结果。
尝试这个:
USE TempDB;
DROP TABLE TestOrderBy;
DROP TABLE TestOrderBy2;
CREATE TABLE TestOrderBy
(
ID INT NOT NULL CONSTRAINT PK_TestOrderBy PRIMARY KEY CLUSTERED IDENTITY(1,1)
, SomeData varchar(255)
);
INSERT INTO TestOrderBy (SomeData) VALUES ('E');
INSERT INTO TestOrderBy (SomeData) VALUES ('D');
INSERT INTO TestOrderBy (SomeData) VALUES ('C');
INSERT INTO TestOrderBy (SomeData) VALUES ('B');
INSERT INTO TestOrderBy (SomeData) VALUES ('A');
CREATE TABLE TestOrderBy2
(
ID INT NOT …
Run Code Online (Sandbox Code Playgroud)