ORDER BY ordena los resultados de una consulta por uno o más campos. Siempre combine ORDER BY con una cláusula LIMIT; de lo contrario, el motor debe ordenar todo el conjunto de resultados, lo que degrada significativamente el rendimiento.
Sintaxis
SELECT [ DISTINCT ]
{ projectItem [, projectItem ]* }
FROM tableExpression
ORDER BY { orderByItem [ASC|DESC] [, orderByItem [ASC|DESC]]* }
LIMIT N
OFFSET M
Parámetros:
|
Parámetro |
Descripción |
|
|
|
Campo por el cual ordenar. Especifique varios campos separados por comas. |
|
|
|
|
Dirección de ordenamiento. |
|
|
Número máximo de registros a devolver. Obligatorio al usar |
|
|
|
Cantidad de registros que se omiten antes de devolver los resultados. Utilícelo junto con |
Ejemplos
A continuación se presentan ejemplos que utilizan una tabla phone con los campos nid, brand, price y size.
Ordenar por un solo campo (ascendente por defecto)
SELECT nid, brand, price, size FROM phone ORDER BY price LIMIT 1000
Devuelve hasta 1,000 registros ordenados por price de menor a mayor. Si omite ASC o DESC, se aplica el orden ascendente de forma predeterminada.
Ordenar por un solo campo en orden ascendente (explícito)
SELECT nid, brand, price, size FROM phone ORDER BY price ASC LIMIT 1000
Equivalente al ejemplo anterior. Utilice ASC de manera explícita cuando desee dejar clara la dirección de ordenamiento en su consulta.
Ordenar por varios campos
SELECT nid, brand, price, size FROM phone ORDER BY size DESC, price DESC LIMIT 1000
Primero ordena por size en orden descendente. Cuando dos registros tienen el mismo valor de size, se ordenan por price en orden descendente. Cada campo subsiguiente sirve como criterio de desempate respecto al anterior.
Paginar resultados ordenados
SELECT nid, brand, price, size FROM phone ORDER BY price DESC LIMIT 10 OFFSET 10
Devuelve los registros del 11 al 20 según un ordenamiento descendente por precio. OFFSET 10 omite los primeros 10 registros; LIMIT 10 devuelve los siguientes 10.
Devolver registros sin ordenamiento
SELECT nid, brand, price, size FROM phone LIMIT 10
Devuelve 10 registros sin un orden específico. Utilice esta opción cuando el orden no sea relevante y necesite la respuesta más rápida posible.