【问题标题】:Order Fields priority订单字段优先级
【发布时间】:2013-09-09 01:05:55
【问题描述】:

我正在使用这个查询:

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

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

【问题讨论】:

    标签: sql oracle sorting group-by


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 不保证。这取决于: 1. 先前执行的包含 ORDER BY 子句的查询 2. Oracle 在缓存中找到的内容 如果您指定了需要对结果排序的下一列,则最好。
      猜你喜欢
      • 2014-06-05
      • 2020-02-06
      • 1970-01-01
      • 1970-01-01
      • 2011-11-07
      • 2019-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多