0

我正在使用这个查询:

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

我按天订购。根据天对结果进行排序后,排序时考虑的下一个字段是什么,同一天,考虑什么顺序?

4

2 回答 2

2

没有进一步的排序。您将在每天按照 Oracle 碰巧检索它们的顺序获得结果,这不能以任何方式保证,并且对于多次运行的同一查询可能会有所不同。这取决于您通常无法控制甚至无法查看的许多事情。您可能会以目前适合您的明显顺序查看结果,但它可能会在未来执行时发生变化。例如,更改数据会影响执行计划,这可能会影响查看结果的顺序。

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

这是汤姆·凯特经常强调的;例如在这篇经常被引用的文章中

于 2013-09-05T10:40:19.190 回答
0

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

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

于 2013-09-05T09:26:30.587 回答