订单字段优先级

时间:2013-09-05 09:09:47

标签: sql oracle sorting group-by

我正在使用此查询:

select  o.orderno, 
        o.day, 
        a.name, 
        o.description, 
        a.adress, 
        o.quantity, 
        a.orderType, 
        o.status, 
        a.Line, 
        a.price,
        a.serial
  from  orders o
        inner join account a
            on o.orderid=a.orderid
  order by o.day

我白天订购。在根据日期对结果进行排序之后,在排序时考虑的下一个字段是什么,在同一天,会考虑哪个订单?

2 个答案:

答案 0 :(得分:2)

没有进一步的排序。您将在每天以Oracle检测到它们的顺序获得结果,这不能保证以任何方式保证,并且对于同时运行多次的查询可能会有所不同。这取决于你通常无法控制甚至可见度的引擎盖下的许多东西。您可能会以适合您的明显顺序看到结果,但它可能会在将来执行时发生变化。例如,更改数据会影响执行计划,这会影响查看结果的顺序。

如果您需要特定订单,或者只是希望每次运行查询时以一致的顺序返回它们,则必须在order by子句中指定它。

这是Tom Kyte经常强调的;例如in this often-quoted article

答案 1 :(得分:0)

尝试按唯一/主键排序。在这种情况下,如果它是您的主键,则为orderno。

但是,您的查询充满了错误。 例如表别名在SELECT子句中使用,但未在FROM

中指定