插入 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;