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: