Oracle 默认按行为排序
Oracle default order by behavior
在 select 查询中,当我们在某些列上添加排序依据时,在返回的结果集中,该列对某些行包含相同的值,这些行的排序行为是什么?
没有定义排序行为,一般来说,至少ANSI标准不要求数据库供应商提供。您 可能 发现某个顺序往往会被服从,但这里最好的做法是仅使用第二个排序级别来打破平局,即使用:
SELECT *
FROM yourTable
ORDER BY
col1,
col2; -- break the tie
因此,如果您的数据是:
col1 | col2
1 | 1
1 | 2
2 | 4
2 | 1
那么上面的查询将 return 一个如你所期望的排序结果。
在 select 查询中,当我们在某些列上添加排序依据时,在返回的结果集中,该列对某些行包含相同的值,这些行的排序行为是什么?
没有定义排序行为,一般来说,至少ANSI标准不要求数据库供应商提供。您 可能 发现某个顺序往往会被服从,但这里最好的做法是仅使用第二个排序级别来打破平局,即使用:
SELECT *
FROM yourTable
ORDER BY
col1,
col2; -- break the tie
因此,如果您的数据是:
col1 | col2
1 | 1
1 | 2
2 | 4
2 | 1
那么上面的查询将 return 一个如你所期望的排序结果。