这是“为什么会发生这种情况? - 问题”
我有以下脚本:
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”,结果就会保持稳定
有人可以告诉我这种行为的理论吗?
亲切的问候 尔根
答案 0 :(得分:4)
如果您希望订购结果,则必须指定ORDER BY
条款。
这与主要密钥无关。
以下脚本很好地说明了这个问题
答案 1 :(得分:0)
您确定结果集是不同的还是只是以不同的顺序?
向临时表添加主键应该导致表的内容按数字顺序排序,因此显示为“稳定”。删除它将删除固有的顺序。