Je lis un code ancien au travail et j'ai remarqué qu'il y a plusieurs vues avec un order by 1
clause. Qu'est-ce que cela accomplit?
Exemple:
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;
Cette:
ORDER BY 1
... est appelé "Ordinal" - le nombre représente la colonne en fonction du nombre de colonnes défini dans la clause SELECT. Dans la requête que vous avez fournie, cela signifie:
ORDER BY A.PAYMENT_DATE
Ce n'est pas une pratique recommandée, car:
Ceci est utile lorsque vous utilisez des opérateurs basés sur des ensembles, par exemple. syndicat
select cola
from tablea
union
select colb
from tableb
order by 1;
Je crois en Oracle cela signifie ordre par colonne # 1
Cela va trier vos résultats par la première colonne retournée. Dans l'exemple, il sera trié par date_paiement.
cela signifie simplement trier la vue ou le tableau par la 1ère colonne du résultat de la requête.
Comme mentionné dans d'autres réponses ORDER BY 1
ordres par la première colonne.
Je suis tombé sur un autre exemple d'utilisation de ce produit. Nous avons certaines requêtes qui doivent être commandées, sélectionnez la même colonne. Vous obtiendrez une erreur SQL si vous commandez par Name
ci-dessous.
SELECT Name, Name FROM Segment ORDER BY 1