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 一个如你所期望的排序结果。