Una ORDER BYcláusula en SQL especifica que una SELECTinstrucción SQL devuelve un conjunto de resultados con las filas ordenadas por los valores de una o más columnas. Los criterios de ordenación no tienen que estar incluidos en el conjunto de resultados (se aplican restricciones para SELECT DISTINCT, GROUP BY, UNION [DISTINCT], EXCEPT [DISTINCT]y INTERSECT [DISTINCT]). Los criterios de ordenación pueden ser expresiones, incluidos nombres de columnas, funciones definidas por el usuario , operaciones aritméticas o CASEexpresiones. Las expresiones se evalúan y los resultados se utilizan para la ordenación, es decir, los valores almacenados en la columna o los resultados de la llamada de función.
ORDER BYes la única forma de ordenar las filas en el conjunto de resultados. Sin esta cláusula, el sistema de base de datos relacional puede devolver las filas en cualquier orden. Si se requiere un orden, se ORDER BYdebe proporcionar en la SELECTdeclaración enviada por la aplicación. Aunque algunos sistemas de base de datos permiten la especificación de una ORDER BYcláusula en subconsultas o definiciones de vista , la presencia allí no tiene efecto en el orden final del conjunto de resultados, pero tiene sentido cuando se combina con una cláusula de desplazamiento de resultado o una cláusula de búsqueda primero. Una vista es una tabla relacional lógica y el modelo relacional exige que una tabla sea un conjunto de filas, lo que implica que no hay ningún orden de clasificación. La única excepción son construcciones como ORDER BY ORDER OF ...(no estandarizadas en SQL:2003 ) que permiten la propagación de criterios de clasificación a través de subconsultas anidadas.
La funcionalidad básica del estándar SQL no define explícitamente un orden de clasificación predeterminado para los valores Null . Con la extensión SQL:2003 T611, "Operaciones OLAP elementales", los valores Null se pueden ordenar antes o después de todos los valores de datos mediante las cláusulas NULLS FIRSTor de la lista, respectivamente. Sin embargo, no todos los proveedores de DBMS implementan esta funcionalidad. Los proveedores que no implementan esta funcionalidad pueden especificar diferentes tratamientos para la ordenación de valores Null en el DBMS. [1]NULLS LASTORDER BY
La estructura ORDER BY ... DESCse ordenará en orden descendente; de lo contrario, se utilizará el orden ascendente. (Este último puede especificarse explícitamente mediante ASC.)
Ejemplos
SELECCIONAR * DE Empleados ORDENAR POR Apellido , Nombre
Esto ordena por la columna Apellido, luego por la columna Nombre si el Apellido coincide.
Referencias
- ^ "Manejo de valores NULL en SQLite en comparación con otros motores de bases de datos" . Consultado el 25 de enero de 2009 .