【发布时间】:2019-04-25 05:17:32
【问题描述】:
当我使用表变量来存储这样的查询结果时:
INSERT INTO @sortedArticleIds
SELECT article_id, NULL AS groupBy
FROM #articleIds a
GROUP BY article_id
ORDER BY MIN(sortBy) DESC;
插入到@sortedArticleIds 的行随机变化。
但如果我像这样使用#table:
INSERT INTO #tmp_table
SELECT article_id, NULL AS groupBy
FROM #articleIds a
GROUP BY article_id
ORDER BY MIN(sortBy) DESC;
插入到#tmp_table 的行总是相同的。
我使用的是 SQL Server 2008 R2。
【问题讨论】:
-
你的意思是插入到@sortedArticleIds 的行随机变化?
-
当我再次执行相同的查询时,插入到变量中的记录会随机变化。但
#articleIds拥有相同的记录。 -
插入行的顺序无关紧要,从表中获取结果时始终使用 order by,即使记录看起来已经按顺序存储。
标签: sql-server stored-procedures sql-server-2008-r2 temp-tables table-variable