ORDENAR POR en MySQLConsulta ASC y DESC con ejemplo

⚡ Resumen inteligente

ORDENAR POR en MySQL Ordena los conjuntos de resultados de las consultas en orden ascendente o descendente mediante las palabras clave ASC y DESC. Las secciones siguientes explican la sintaxis, la ordenación por una o varias columnas, la ubicación de los valores NULL y ejemplos prácticos ejecutados con la base de datos de ejemplo myflixdb.

  • 🔠 Comportamiento predeterminado: La función ORDER BY ordena en orden ascendente cuando no se especifica ni ASC ni DESC, por lo que ASC es opcional en la mayoría de las instrucciones.
  • ⬆️ Palabra clave ASC: ASC ordena los números de menor a mayor, las cadenas de caracteres de la A a la Z y las fechas de la más antigua a la más reciente.
  • ⬇️ Palabra clave DESC: DESC invierte esa secuencia, lo cual se ajusta a los historiales de pago con los pagos más recientes primero y a las listas decrecientes por fecha de nacimiento.
  • 🧮 Ordenación por varias columnas: El orden de las columnas importa. ORDER BY gender, date_of_birth DESC ordena primero el género de forma ascendente y luego las fechas de forma descendente dentro de cada grupo.
  • 🔎 Combinación de cláusulas: WHERE filtra las filas, GROUP BY las agrega, ORDER BY ordena el resultado y LIMIT lo recorta.
  • ⚙️ Factor de rendimiento: Un índice en la columna ordenada permite MySQL para evitar una operación de ordenación de archivos en tablas grandes.

ORDENAR POR en MySQL

¿Qué es ORDER BY en MySQL?

MySQL ORDEN POR es una cláusula que se utiliza con la consulta SELECT para ordenar los datos de manera ordenada. MySQL La cláusula ORDER BY ordena el conjunto de resultados de la consulta en orden ascendente o descendente, por una columna o por varias columnas a la vez.

Cuando se utiliza el comando SELECT de forma independiente, las filas se devuelven en el orden en que el motor de almacenamiento las lee, lo cual no garantiza un orden específico. La ordenación consiste simplemente en reorganizar esas filas en una secuencia determinada. Se puede aplicar a datos numéricos, de cadena y de fecha.

MySQL ORDENAR POR Sintaxis

Antes de ver los ejemplos, conviene observar dónde se ubica la cláusula dentro de una instrucción SELECT completa.

SELECT statement... [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];

AQUÍ

  • "Instrucción SELECT... " es la consulta select habitual.
  • ” | “ representa alternativas.
  • “[WHERE condición | GROUP BY `field_name(s)` HAVING condición]” es la condición opcional que se utiliza para filtrar el conjunto de resultados de la consulta.
  • “ORDENAR POR” Realiza la ordenación del conjunto de resultados de la consulta.
  • “[ASC | DESC]” es la palabra clave que se utiliza para ordenar el conjunto de resultados en orden ascendente o descendente. Tenga en cuenta que ASC es el predeterminado.

¿Qué son las palabras clave DESC y ASC?

ASC y DESC son las dos direcciones de ordenación que acepta ORDER BY. La siguiente tabla las compara según los tipos de datos que se ordenan con mayor frecuencia.

Palabras clave DESC y ASCASC es la forma corta de ascender Palabras clave DESC y ASCMySQL DESC es la forma corta de descender
Se utiliza para ordenar los resultados de la consulta de arriba a abajo. Se utiliza para ordenar los resultados de la consulta de abajo hacia arriba.
Cuando se trabaja con tipos de datos de fecha, la fecha más antigua se muestra en la parte superior de la lista. Al trabajar con datos de tipo fecha, la fecha más reciente 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. Al trabajar 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 aquellos 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 hasta la letra A.

Las palabras clave SQL DESC y ASC se utilizan junto con la instrucción SELECT y la MySQL Cláusula ORDER BY.

Sintaxis DESC y ASC

La palabra clave de ordenación SQL DESC tiene la siguiente sintaxis básica.

SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC | DESC [LIMIT N];

AQUÍ

  • SELECCIONE {nombre(s) de campo | *} FROM nombre(s) de tabla(s) es la declaración que contiene los campos y la(s) tabla(s) de las cuales obtener el conjunto de resultados.
  • [DONDE condición] Es opcional pero se puede utilizar para filtrar los datos según la condición dada.
  • ORDENAR POR nombre(s) de campo es obligatorio y nombra el campo sobre el cual se realiza la ordenación. MySQL La palabra clave DESC especifica que la clasificación se realiza en orden descendente.
  • [LÍMITE N] Es opcional, pero puede utilizarse para limitar el número de filas devueltas en el conjunto de resultados de la consulta.

¿Por qué usar DESC y ASC en? MySQL?

Conocer la sintaxis es solo una parte del panorama. La razón por la que existe la cláusula ORDER BY es que un conjunto de resultados que una base de datos puede generar fácilmente no siempre es fácil de leer para una persona.

Supongamos que imprimes el historial de pagos de un miembro de la videoteca para que la recepción pueda responder a sus consultas rápidamente. Es mucho más lógico imprimir los pagos en orden cronológico descendente, comenzando por el más reciente y retrocediendo hasta el más antiguo. La palabra clave DESC en SQL resulta muy útil en esta situación, ya que permite ordenar la lista por fecha de pago.

Supongamos ahora que el departamento de marketing necesita una lista de películas por categoría, para que los socios puedan ver qué títulos tiene la biblioteca antes de alquilarlos. Ordenar las categorías y los títulos de las películas en orden ascendente permite a los socios buscar información rápidamente, igual que en un índice. La palabra clave ASC cumple esa función.

En resumen, ORDER BY convierte un conjunto de resultados sin procesar en un informe. La palabra clave que elijas dependerá de la pregunta que formule el lector: lo que sucedió más recientemente llama a DESC, mientras que ¿Dónde puedo encontrar este artículo? llama a ASC.

MySQL Ejemplo de ORDENAR POR

Todos los ejemplos que siguen se ejecutan sobre la base de datos de ejemplo myflixdb. Comience con la tabla de miembros sin ordenar, que se devuelve en su orden predeterminado.

SELECT * FROM members;

Ejecutando el script anterior en MySQL Workbench, al trabajar con myflixdb, nos da los siguientes resultados que se muestran a continuación.

número de socio nombres completos género fecha de nacimiento dirección física dirección postal número_de_contacto o enviar un email.
1 Janet jones Mujer 21-07-1980 Primera Calle Parcela No 4 Bolsa privada 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Mujer 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
3 Roberto Phil Hombre 12-07-1989 Calle 3 34 NULL 12345 rm@tstreet.com
4 gloria williams Mujer 14-02-1984 Calle 2 23 NULL NULL NULL
5 leonard hofstadter Hombre NULL Woodcrest NULL 845738767 NULL
6 Sheldon Cooper Hombre NULL Woodcrest NULL 976736763 NULL
7 Rajesh Koothrappali Hombre NULL Woodcrest NULL 938867763 NULL
8 Leslie Winkel Hombre 14-02-1984 Woodcrest NULL 987636553 NULL
9 Howard Wolowitz Hombre 24-08-1981 Parque del Sur PO Box 4563 987786553 NULL

Ordenación en orden descendente con DESC

Supongamos que el departamento de marketing desea que los datos de los miembros estén ordenados de forma descendente según su fecha de nacimiento. Esto ayuda al equipo a enviar felicitaciones de cumpleaños a tiempo. La lista se genera mediante la siguiente consulta.

SELECT * FROM members ORDER BY date_of_birth DESC;

Ejecutando el script anterior en MySQL Workbench, al trabajar con myflixdb, nos da los siguientes resultados que se muestran a continuación.

MySQL Resultado de la consulta ORDER BY DESC

Ordenación en orden ascendente con ASC

La misma consulta en orden ascendente simplemente intercambia la palabra clave.

SELECT * FROM members ORDER BY date_of_birth ASC;

MySQL Resultado de la consulta ORDER BY ASC

Nota: NULL significa ningún valor, lo cual no es lo mismo que cero o una cadena vacía. Observe en ambas capturas de pantalla cómo se agrupan las fechas NULL: MySQL Considera que NULL es un valor inferior a cualquier otro, por lo que las filas con valores NULL aparecen primero en orden ascendente (ASC) y al final en orden descendente (DESC).

Cómo ordenar por varias columnas en MySQL

La ordenación por una sola columna permite resolver preguntas sencillas. Los informes suelen requerir un segundo nivel de ordenación, y la función ORDER BY acepta una lista de campos separados por comas precisamente para ese fin.

Considere el siguiente script de ordenación SQL que enumera todos los registros de miembros sin ninguna instrucción explícita.

SELECT * FROM `members`;

La ejecución del script anterior arroja los siguientes resultados que se muestran a continuación.

número de socio nombres completos género fecha de nacimiento dirección física dirección postal número_de_contacto o enviar un email.
1 Janet jones Mujer 21-07-1980 Primera Calle Parcela No 4 Bolsa privada 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Mujer 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
3 Roberto Phil Hombre 12-07-1989 Calle 3 34 NULL 12345 rm@tstreet.com
4 gloria williams Mujer 14-02-1984 Calle 2 23 NULL NULL NULL
5 leonard hofstadter Hombre NULL Woodcrest NULL 845738767 NULL
6 Sheldon Cooper Hombre NULL Woodcrest NULL 976736763 NULL
7 Rajesh Koothrappali Hombre NULL Woodcrest NULL 938867763 NULL
8 Leslie Winkel Hombre 14-02-1984 Woodcrest NULL 987636553 NULL
9 Howard Wolowitz Hombre 24-08-1981 Parque del Sur PO Box 4563 987786553 NULL

Ordenar una sola columna por orden predeterminado

Supongamos que queremos una lista que ordene el conjunto de resultados de la consulta utilizando el campo de género. El siguiente script lo hace sin especificar una dirección.

SELECT * FROM `members` ORDER BY `gender`;
número de socio nombres completos género fecha de nacimiento dirección física dirección postal número_de_contacto o enviar un email.
1 Janet jones Mujer 21-07-1980 Primera Calle Parcela No 4 Bolsa privada 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Mujer 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
4 gloria williams Mujer 14-02-1984 Calle 2 23 NULL NULL NULL
3 Roberto Phil Hombre 12-07-1989 Calle 3 34 NULL 12345 rm@tstreet.com
5 leonard hofstadter Hombre NULL Woodcrest NULL 845738767 NULL
6 Sheldon Cooper Hombre NULL Woodcrest NULL 976736763 NULL
7 Rajesh Koothrappali Hombre NULL Woodcrest NULL 938867763 NULL
8 Leslie Winkel Hombre 14-02-1984 Woodcrest NULL 987636553 NULL
9 Howard Wolowitz Hombre 24-08-1981 Parque del Sur PO Box 4563 987786553 NULL

Los miembros “Femeninos” se muestran primero, seguidos de los miembros “Masculinos”. Esto se debe a que cuando se utiliza la cláusula ORDER BY sin especificar el ASC o MySQL Palabra clave DESC, MySQL Por defecto, ordena el conjunto de resultados de la consulta en orden ascendente.

Ordenar dos columnas en direcciones opuestas

Veamos ahora un ejemplo que realiza la ordenar usando dos columnasLa primera columna es ordenados in orden ascendente por defecto, mientras que la segunda columna es ordenados in orden descendiente.

SELECT * FROM `members` ORDER BY `gender`, `date_of_birth` DESC;

Ejecutando el script anterior en MySQL Workbench, al trabajar con myflixdb, arroja los siguientes resultados.

MySQL Ejemplo de ORDER BY de dos columnas

La columna de género se ordenó de forma ascendente por defecto, mientras que la columna de fecha de nacimiento se ordenó explícitamente de forma descendente. Cada palabra clave de dirección se aplica únicamente a la columna que le sigue.

Cómo combinar ORDER BY con WHERE, LIMIT y GROUP BY

La cláusula ORDER BY rara vez es la única en una consulta de producción. MySQL Siempre evalúa las cláusulas en una secuencia fija, y conocer esa secuencia explica por qué los resultados tienen el aspecto que tienen.

  1. DESDE lee las filas de la tabla.
  2. Dónde descarta las filas que no cumplen la condición.
  3. GRUPO POR agrupa las filas restantes y HAVING filtra esos grupos.
  4. ORDEN POR secuencia las filas que queden.
  5. LIMITE LAS recorta el número de filas solicitado de la lista ordenada.

Dado que ORDER BY se ejecuta después de WHERE y GROUP BY, pero antes de LIMIT, una consulta como "los cinco miembros más jóvenes de Woodcrest" se expresa en una sola instrucción.

SELECT full_names, date_of_birth FROM members
WHERE physical_address = 'Woodcrest'
ORDER BY date_of_birth DESC
LIMIT 5;

El mismo orden se aplica a los resultados agrupados. Valores agregados producidos por Funciones agregadas Por ejemplo, se pueden ordenar los datos según el criterio COUNT, de modo que la categoría con mayor actividad aparezca en la parte superior del informe.

SELECT gender, COUNT(*) AS members_count FROM members
GROUP BY gender
ORDER BY members_count DESC;

Tip: ORDER BY permite ordenar por alias de columna, por una expresión o incluso por posición de columna, como ORDER BY 3. Ordenar por posición es delicado, ya que al insertar una nueva columna en la lista SELECT se modifica silenciosamente la clave de ordenación. En su lugar, asigne un nombre a la columna.

Un punto de rendimiento que vale la pena recordar. Cuando la columna ordenada contiene un índice, MySQL Se pueden leer las filas en orden de índice y omitir la ordenación por completo. Sin un índice, las tablas grandes obligan a realizar una ordenación de archivos en memoria o en disco, lo que suele ser la razón por la que una consulta de informe se vuelve lenta.

Preguntas Frecuentes

Sí, puede. Sin un índice en la columna ordenada, MySQL Realiza una ordenación de archivos sobre todo el conjunto de resultados. Agregar un índice que coincida con la columna y la dirección de ORDER BY permite que el servidor lea las filas en orden y omita ese paso.

Por lo general, no. Las intercalaciones predeterminadas, como utf8mb4_0900_ai_ci, no distinguen entre mayúsculas y minúsculas, por lo que "apple" y "Apple" se ordenan juntas. Una intercalación binaria o _cs, o ORDER BY BINARY column_name, produce un ordenamiento que sí distingue entre mayúsculas y minúsculas, donde las letras mayúsculas aparecen primero.

Sí. ORDER BY RAND() baraja el conjunto de resultados, lo cual es útil para seleccionar una película o un miembro al azar. Califica cada fila antes de ordenarla, así que combínala con LIMIT y evítala en tablas muy grandes.

Sí. Los asistentes de IA están integrados en herramientas como MySQL Banco de trabajo Convierta las solicitudes en lenguaje natural en sentencias SELECT con ORDER BY. Revise siempre la columna y la dirección de ordenación generadas, ya que una IA no puede saber qué orden requiere su informe.

En parte. Los asesores basados ​​en IA analizan los registros de consultas lentas y sugieren índices que eliminan las operaciones de ordenación de archivos. Sin embargo, estas sugerencias aún requieren revisión humana, ya que cada índice adicional ralentiza las inserciones y actualizaciones en la misma tabla.

Resumir este post con: