插入 temp table 和 table 变量时的不同结果
Different results while inserting into temp table and table variable
当我使用 table 变量存储这样查询的结果时:
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。
在关系型数据库中,你的table是一个集合。这意味着不需要 ORDER BY
和您插入的 GROUP BY
。
INSERT INTO @sortedArticleIds
SELECT article_id, NULL AS groupBy
FROM #articleIds
此处您正在更新 table,因此我们不需要 ORDER BY
子句。
但是当您查询 table 时,更喜欢这样的查询。
SELECT *
FROM @sortedArticleIds
GROUP BY article_id
ORDER BY MIN(sortBy) DESC;
当我使用 table 变量存储这样查询的结果时:
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。
在关系型数据库中,你的table是一个集合。这意味着不需要 ORDER BY
和您插入的 GROUP BY
。
INSERT INTO @sortedArticleIds
SELECT article_id, NULL AS groupBy
FROM #articleIds
此处您正在更新 table,因此我们不需要 ORDER BY
子句。
但是当您查询 table 时,更喜欢这样的查询。
SELECT *
FROM @sortedArticleIds
GROUP BY article_id
ORDER BY MIN(sortBy) DESC;