小编典典

SQL select语句中Order By 1的目的是什么?

all

我正在阅读一些工作中的旧代码,并注意到有几个带有order by 1子句的视图。这有什么作用?

例子:

Create view v_payment_summary AS
SELECT A.PAYMENT_DATE,
       (SELECT SUM(paymentamount)
          FROM payment B
         WHERE PAYMENT_DATE = B.PAYMENT_DATE
           and SOME CONDITION) AS SUM_X,
       (SELECT SUM(paymentamount)
          FROM payment B
         WHERE PAYMENT_DATE = B.PAYMENT_DATE
           and SOME OTHER CONDITION) AS SUM_Y    
FROM payment A    
ORDER BY 1;

阅读 59

收藏
2022-07-09

共1个答案

小编典典

这个:

ORDER BY 1

…被称为“序数” - 该数字代表基于 SELECT 子句中定义的列数的列。在您提供的查询中,这意味着:

ORDER BY A.PAYMENT_DATE

这不是推荐的做法,因为:

  1. 这不明显/不明确
  2. 如果列顺序发生变化,查询仍然有效,因此您可能会冒着按您不想要的东西排序的风险
2022-07-09