私は職場で古いコードを読んでいますが、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
...は「順序」として知られています-番号は、SELECT句で定義された列の数に基づく列を表します。指定したクエリでは、次のことを意味します。
ORDER BY A.PAYMENT_DATE
次の理由により、推奨される方法ではありません。
これは、セットベースの演算子を使用する場合に便利です。連合
select cola
from tablea
union
select colb
from tableb
order by 1;
私はOracleでは列#1による順序付けを意味すると考えています
これにより、返された最初の列で結果が並べ替えられます。この例では、payment_dateでソートします。
クエリの結果の1列目でビューまたはテーブルを並べ替えることを意味します。
他の回答で述べたように、ORDER BY 1
は最初の列で並べます。
私はあなたがそれを使用するかもしれないところの別の例を見つけました。同じ列を選択するように注文する必要がある特定のクエリがあります。以下のName
で注文すると、SQLエラーが発生します。
SELECT Name, Name FROM Segment ORDER BY 1