当我使用表变量来存储查询结果时,如下所示:
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。
答案 0 :(得分:1)
在关系数据库中,您的表是一个集合。这意味着不需要ORDER BY
和您的GROUP BY
插入。
INSERT INTO @sortedArticleIds
SELECT article_id, NULL AS groupBy
FROM #articleIds
这里您要更新表,因此我们不需要ORDER BY
子句。
但是当您查询表时,更喜欢这样的查询。
SELECT *
FROM @sortedArticleIds
GROUP BY article_id
ORDER BY MIN(sortBy) DESC;