为什么此SQL查询在SQL 2008R2和2012中产生不同的输出结果。此查询的2008R2结果似乎很好。为什么2012年缺少相同的排序顺序?
Declare @TempTable TABLE (Name VARCHAR(25), RankOrder INT)
INSERT INTO @TempTable SELECT 'b', 2 UNION ALL SELECT 'd', 4 UNION ALL SELECT 'a', 1 UNION ALL SELECT 'e', 5 UNION ALL SELECT 'c', 3
SELECT * INTO #ResultTable FROM @TempTable ORDER BY RankOrder
SELECT * FROM #ResultTable
DROP TABLE #ResultTable
使用SELECT ... INTO <new_table> ...
语句几乎忽略了该ORDER BY
语句。
从INTO子句文档中,限制与限制:
指定ORDER BY子句不能保证以指定的顺序插入行。
然后,您SELECT
将从临时表中获得的所有行都没有ORDER BY
子句,该子句也无法保证您将收到的行的顺序。您将假定插入行的顺序相同,但是不能保证该行的顺序是。
总之,您不能期望返回行的任何特定顺序,并且在同一RDBMS的不同版本中它们可能有所不同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句