SQL Server UNION – 什么是缺省ORDER BY行为

如果我有几个UNION声明作为一个假设的例子:

SELECT * FROM xxx WHERE z = 1
UNION 
SELECT * FROM xxx WHERE z = 2
UNION
SELECT * FROM xxx WHERE z = 3

按行为的默认顺序是什么?

我看到的测试数据基本上不会按照上面指定的顺序返回数据。也就是说数据是有序的,但我想知道什么是优先级的规则。

另一件事是在这种情况下xxx是一个视图。视图将3个不同的表连接在一起,以返回我想要的结果。

没有默认订单。

没有Order By子句返回的顺序是undefined。这意味着SQL Server可以按任何顺序返回它们。

编辑:
根据我所看到的,没有Order By,结果返回的顺序取决于查询计划。因此,如果有一个索引,它正在使用,结果可能会按顺序回来,但同样没有保证。

http://stackoverflow.com/questions/421049/sql-server-union-what-is-the-default-order-by-behaviour

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:SQL Server UNION – 什么是缺省ORDER BY行为