When I'm using a table variable to store queried result like this:
INSERT INTO @sortedArticleIds
SELECT article_id, NULL AS groupBy
FROM #articleIds a
GROUP BY article_id
ORDER BY MIN(sortBy) DESC;
the rows inserted to @sortedArticleIds change randomly.
But if I use #table like this:
INSERT INTO #tmp_table
SELECT article_id, NULL AS groupBy
FROM #articleIds a
GROUP BY article_id
ORDER BY MIN(sortBy) DESC;
the rows inserted to #tmp_table are always same.
I'm using SQL Server 2008 R2.
In relational database, your table is a set. It means that the
ORDER BYand yourGROUP BYof you insert is not needed.Here you are updating a table, so we don't need an
ORDER BYclause.But when you will query your table, prefer a query like this.