Clasificación de resultados
Con el comando SELECT, los resultados se devolvieron en el mismo orden en que se agregaron los registros a la base de datos. Este es el orden de clasificación predeterminado. En esta sección, veremos cómo podemos ordenar los resultados de nuestra consulta. Ordenar es simplemente reorganizar los resultados de nuestra consulta de una manera específica. La clasificación se puede realizar en una sola columna o en más de una columna. Se puede hacer en números, cadenas y tipos de datos de fecha.
¿Qué es ORDER BY en MySQL?
MySQL ORDER BY se usa junto con la consulta SELECT para ordenar los datos de manera ordenada. La cláusula ORDER BY de MySQL se utiliza para ordenar los conjuntos de resultados de la consulta en orden ascendente o descendente.
SELECT statement… [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
AQUÍ
- "Sentencia SELECT ..." es la consulta de selección normal
- "|" representa alternativas
- "[WHERE condition | GROUP BY` field_name (s) `HAVING condition" es la condición opcional utilizada para filtrar los conjuntos de resultados de la consulta.
- "ORDER BY" realiza la clasificación del conjunto de resultados de la consulta
- "[ASC | DESC]" es la palabra clave utilizada para ordenar conjuntos de resultados en orden ascendente o descendente. Nota ASC se utiliza de forma predeterminada.
¿Qué son las palabras clave DESC y ASC?
ASC es la forma abreviada de ascender |
MySQL DESC es la forma abreviada de descendente |
Se utiliza para ordenar los resultados de la consulta en un estilo de arriba a abajo. |
Se utiliza para ordenar los resultados de la consulta en un estilo de abajo hacia arriba. |
Cuando se trabaja con tipos de datos de fecha, la fecha más temprana se muestra en la parte superior de la lista. |
. Cuando se trabaja con tipos de fecha, la última fecha se muestra en la parte superior de la lista. |
Cuando se trabaja con tipos de datos numéricos, los valores más bajos se muestran en la parte superior de la lista. |
Cuando se trabaja con tipos de datos numéricos, los valores más altos se muestran en la parte superior del conjunto de resultados de la consulta. |
Cuando se trabaja con tipos de datos de cadena, el conjunto de resultados de la consulta se ordena desde los que comienzan con la letra A hasta la letra Z. |
Cuando se trabaja con tipos de datos de cadena, el conjunto de resultados de la consulta se ordena desde aquellos que comienzan con la letra Z y van hacia abajo hasta la letra A. |
Las palabras clave SQL DESC y ASC se utilizan junto con la instrucción SELECT y la cláusula ORDER BY de MySQL.
Sintaxis DESC y ASC
La palabra clave SQL DESC sort tiene la siguiente sintaxis básica.
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC /DESC [LIMIT N]
AQUÍ
- SELECCIONAR {fieldName (s) | *} FROM tableName (s) es la declaración que contiene los campos y tablas de los que se obtiene el conjunto de resultados.
- [WHERE condición] es opcional pero se puede utilizar para filtrar los datos de acuerdo con la condición dada.
- ORDER BY nombre (s) de campo es obligatorio y es el campo en el que se realizará la clasificación. La palabra clave DESC de MySQL especifica que la clasificación debe ser en orden descendente.
- [LIMIT] es opcional, pero se puede utilizar para limitar el número de resultados devueltos del conjunto de resultados de la consulta.
Ejemplos:
Veamos ahora un ejemplo práctico:
SELECT * FROM members;
La ejecución del script anterior en MySQL workbench contra myflixdb nos da los siguientes resultados que se muestran a continuación.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 |
Supongamos que el departamento de marketing quiere que los detalles de los miembros estén ordenados en orden decreciente de fecha de nacimiento. Esto les ayudará a enviar saludos de cumpleaños de manera oportuna. Podemos obtener dicha lista ejecutando una consulta como la siguiente:
SELECT * FROM members ORDER BY date_of_birth DESC;
La ejecución del script anterior en MySQL workbench contra myflixdb nos da los siguientes resultados que se muestran a continuación.
La misma consulta en orden ascendente
SELECCIONAR * DE miembros ORDENAR POR fecha_de_nacimiento ASC
Nota: Los valores NULL significan que no hay valores (ni cero ni cadena vacía). Observe la forma en que se han clasificado.
Más ejemplos
Consideremos el siguiente script que enumera todos los registros de miembros.
SELECT * FROM `members`;
La ejecución del script anterior da los siguientes resultados que se muestran a continuación.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | NULL |
Supongamos que queremos obtener una lista que ordena el conjunto de resultados de la consulta usando el campo de género, usaríamos el script que se muestra a continuación.
SELECT * FROM `members` ORDER BY `gender`;
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | NULL |
Los miembros "Femeninos" se han mostrado primero seguidos por los miembros "Masculinos", esto se debe a que cuando se usa la cláusula ORDER BY DESC sin especificar la palabra clave ASC o MySQL DESC, de forma predeterminada, MySQL ha ordenado el conjunto de resultados de la consulta en orden ascendente.
Veamos ahora un ejemplo que ordena usando dos columnas ; la primera se ordena en orden ascendente de forma predeterminada, mientras que la segunda columna se ordena en orden descendente.
SELECT * FROM `members` ORDER BY `gender`,`date_of_birth` DESC;
La ejecución del script anterior en MySQL workbench contra myflixdb da los siguientes resultados.
La columna de género se ordenó en orden ascendente de forma predeterminada, mientras que la columna de fecha de nacimiento se ordenó en orden descendente explícitamente
¿Por qué podemos usar DESC y ASC?
Supongamos que queremos imprimir un historial de pagos para un miembro de la biblioteca de videos para ayudar a responder consultas desde la recepción, ¿no sería más lógico imprimir los pagos en un orden cronológico descendente comenzando con el pago reciente hasta el pago anterior?
DESC en SQL es una palabra clave que resulta útil en tales situaciones. Podemos escribir una consulta que ordene la lista en orden descendente usando la fecha de pago.
Suponga que el departamento de marketing desea obtener una lista de películas por categoría que los miembros pueden usar para decidir qué películas están disponibles en la biblioteca cuando alquilan películas, ¿no sería más lógico ordenar los nombres de las categorías de películas y el título en orden ascendente para que los miembros pueden buscar rápidamente la información de la lista?
La palabra clave ASC es útil en tales situaciones; podemos obtener la lista de películas ordenada por nombre de categoría y título de película en orden ascendente.
Resumen
- Ordenar los resultados de la consulta es reorganizar las filas devueltas de un conjunto de resultados de la consulta, ya sea en orden ascendente o descendente.
- La palabra clave DESC en SQL se utiliza para ordenar el conjunto de resultados de la consulta en orden descendente.
- La palabra clave ASC se utiliza para ordenar el conjunto de resultados de la consulta en orden ascendente.
- Tanto DESC como ASC funcionan junto con la palabra clave ORDER BY. También se pueden usar en combinación con otras palabras clave como la cláusula WHERE y LIMIT
- El valor predeterminado para ORDER BY cuando no se ha especificado explícitamente nada es ASC.