1

这是一个“为什么会发生这种情况??? - 问题”

我有以下脚本:

DECLARE @sql_stmt nvarchar(max)

SET @sql_stmt = '
   select top 100000 id as id
   from  dat.sev_sales_event
   order by id
'

DECLARE @preResult TABLE ( sales_event_id INT NOT NULL PRIMARY KEY)

INSERT INTO @preResult(sales_event_id)
EXEC sp_executesql @sql_stmt

SELECT * FROM @preResult

如果我运行此脚本,每次执行的结果可能会有所不同

通过简单地从临时表中删除“PRIMARY KEY” ,结果保持稳定

有人可以告诉我这种行为的理论吗?

亲切的问候于尔根

4

2 回答 2

4

数据库中数据的顺序没有意义。

如果您希望对结果进行排序,则必须指定一个ORDER BY子句。

这与是否具有 PRIMARY 键无关。

以下脚本很好地说明了这个问题

于 2013-07-30T12:26:12.603 回答
0

您确定结果集不同还是只是顺序不同?

向临时表添加主键应导致表的内容按数字升序排列,因此显得“稳定”。删除它会删除固有的顺序。

于 2013-07-30T12:16:35.387 回答