Dan*_*son 7 oracle sql-order-by
我对Oracle中的查询感到困惑,该查询以看似随机的顺序返回.
SELECT
Date,
Amount
FROM MyTable
WHERE Date = '26-OCT-2010'
ORDER BY Date
Run Code Online (Sandbox Code Playgroud)
这将返回以下数据:
| Date | Amount
--------------------------
1 | 26-OCT-10 | 85
2 | 26-OCT-10 | 9
3 | 26-OCT-10 | 100
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么数据库以此特定顺序返回数据,或者为什么,因为原始表将以这种方式返回数据.
转换Date以TIMESTAMP确认所有Date值都是相同的值 - 26-OCT-10 00.00.00.000000000因此,我可以排除值存在差异.但是,当我这样做时,行返回1,3,2的顺序.
这让我很生气,所以如果有人可以解释为什么会这样,那真的有助于安抚我.
我希望每次运行查询时都会以不同的顺序返回,因为条件的条件在每一行上都是相同的(因此使排序保持纯粹的机会).
提前谢谢了.
Ton*_*ews 10
排序不是"纯粹的机会" - 除非您将查询修改为:
SELECT
Date,
Amount
FROM MyTable
WHERE Date = '26-OCT-2010'
ORDER BY Date, DBMS_RANDOM.VALUE;
Run Code Online (Sandbox Code Playgroud)
排序是"任意的".而不是"掷骰子"来决定任意顺序(这将导致一些不必要的成本),Oracle只是按照它遇到的顺序返回数据 - 从短期内的运行开始可能是相同的.(从长远来看,环境中的某些东西可能会改变,以使排序不同 - 但仍然是任意的).
| 归档时间: |
|
| 查看次数: |
2046 次 |
| 最近记录: |