是否保证声明的排序顺序
SELECT nr
FROM
(
SELECT 1 AS nr FROM dual
UNION
SELECT 2 AS nr FROM dual
UNION
SELECT 3 AS nr FROM dual
);
Run Code Online (Sandbox Code Playgroud)
结果集总是如此
1
2
3
Run Code Online (Sandbox Code Playgroud)
?
不,这不能保证.SQL表表示无序集.SQL结果集也是无序的 - 除非代码具有显式ORDER BY.
如果没有ORDER BY,您将获得相同的三行,但值可以按任何顺序排列.我强烈建议您执行以下操作:
SELECT nr
FROM (SELECT 1 AS nr FROM dual
UNION ALL
SELECT 2 AS nr FROM dual
UNION ALL
SELECT 3 AS nr FROM dual
) x
ORDER BY nr;
Run Code Online (Sandbox Code Playgroud)
请注意,这使用UNION ALL而不是UNION. UNION删除重复项会产生开销 - 这些数据不需要.
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |