1. ホーム
  2. sql

[解決済み] SQLのselect文におけるOrder By 1の目的は何ですか?

2022-03-11 12:34:55

質問

職場で古いコードを読んでいて、いくつかのビューに 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;

解決方法は?

これです。

ORDER BY 1

...は、quot;Ordinal" として知られています - 数字は、SELECT句で定義された列の数に基づいて、列を表します。 あなたが提供したクエリでは、それは意味します。

ORDER BY A.PAYMENT_DATE

推奨される行為ではない、からです。

  1. 自明でない/明示的でない
  2. カラムの順序が変わっても、クエリーは有効なので、意図しない順序になる危険性があります。