我有两个存储过程。其中两个存储过程的条件逻辑相同。但是连接表,选择列对于两个存储过程是不同的。
SP就像下面一样。
Select a, b, c, d, e From Table (Join Logic) where (Conditions)
Union All
Select a, b, c, d, e From Table (Join Logic) where (Conditions)
Union All
Select a, b, c, d, e From Table (Join Logic) where (Conditions).
我没有使用过任何订单。两个SP之间唯一的区别是选择列和&加入 表格不同。
但是SP1& SP2结果订单仅对一个或两个记录不同。为什么会这样发生。 由于Union All,任何Auto order By已经发生了吗?
如果我在选择参数中使用Distinct,我会收到正确的订单。
任何人都可以告诉我导致此订单对齐的原因吗?
答案 0 :(得分:2)
如果没有明确的ORDER BY
,则无法保证订购。期
除非您有ORDER BY
,否则不要依赖订购;它可能会在将来改变。