2010-06-11 4 views
3

Dans Oracle SQL, il existe un critère possible appelé rownum. Puis-je confirmer que Rownum sera enfin exécuté comme une limite pour le nombre d'enregistrements retournés? ou pourrait-il être exécuté en premier, avant d'autres critères WHERE SQL (si nous mettons rownum avant les autres)?Ordre d'exécution ORACLE SQL ROWNUM

Répondre

4

Ce n'est pas l'équivalent de LIMIT dans d'autres langues. Si vous envisagez de limiter le nombre d'enregistrements avec rownum, vous devrez sous-interroger ORDER BY à l'intérieur et utiliser rownum dans la requête externe. L'ordre des éléments dans votre clause WHERE n'a pas d'importance. Voir this excellent article par Tom Kyte.

+0

Le lien a été remplacé par http://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197.html – Vadzim

2

Oui, dans une clause WHERE, ROWNUM est toujours évalué en dernier, après que tous les autres prédicats ont été évalués, indépendamment de leur ordre.

Cependant, il est évalué avant toute clause GROUP BY ou ORDER BY.