一尘不染

SQL select语句中“按1排序”的目的是什么?

sql

我正在阅读一些工作中的旧代码,并注意到有多个带有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;

阅读 235

收藏
2021-05-05

共1个答案

一尘不染

这:

ORDER BY 1

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

ORDER BY A.PAYMENT_DATE

不建议这样做,因为:

  1. 这不是很明显/明确
  2. 如果列顺序发生变化,则查询仍然有效,因此您可能会冒意外的顺序进行排序
2021-05-05