Ordenación por varias columnas
Resuelva los empates con claves de ordenación secundarias
Ordenación por varias columnas es una lección gratuita de SQL Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de SQL Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Academy incluye 4 lecciones en total.
El problema de los empates
Cuando ordena por una sola columna, las filas con el mismo valor no tienen un orden definido entre sí. Tres productos con un precio de 20 podrían devolverse en cualquier secuencia.
Para que el orden sea completamente predecible, añada una segunda clave de ordenación.
-- Ties on price are ordered arbitrarily
SELECT name, price
FROM products
ORDER BY price;Indicar varias claves de ordenación
ORDER BY acepta una lista de columnas separadas por comas. La base de datos ordena por la primera columna, resuelve los empates con la segunda y así sucesivamente.
Aquí, los productos se ordenan por precio y, en caso de empate, alfabéticamente por nombre.
SELECT name, price
FROM products
ORDER BY price, name;El orden de las claves importa
La secuencia de las columnas cambia el resultado. ORDER BY price, name no equivale a ORDER BY name, price.
La primera clave es la ordenación principal; las posteriores solo importan cuando hay empate en las anteriores.
-- Primary sort by category, then by name within each category
SELECT category, name
FROM products
ORDER BY category, name;Dirección por columna
Cada clave de ordenación puede tener su propia dirección. Combine ASC y DESC libremente.
Esto agrupa por categoría alfabéticamente, pero muestra primero los artículos más caros dentro de cada categoría.
SELECT category, name, price
FROM products
ORDER BY category ASC, price DESC;DESC se aplica por columna
Un error frecuente es pensar que DESC al final invierte todo. Solo afecta a la columna que lo precede directamente.
En ORDER BY category, price DESC, category sigue en orden ascendente; solo price está en orden descendente.
-- category: ASC, price: DESC
SELECT category, price
FROM products
ORDER BY category, price DESC;Tres o más claves
Puede encadenar tantas claves de ordenación como necesite. Cada una solo entra en juego cuando todas las claves anteriores son iguales.
Ordene los pedidos por fecha, después por cliente y, dentro del mismo cliente y fecha, por total.
SELECT created_at, customer_id, total
FROM orders
ORDER BY created_at DESC, customer_id, total DESC;Una ordenación estable y determinista
Para obtener un resultado completamente determinista, termine las claves de ordenación con una columna única, como la clave principal. Así no podrá haber dos filas empatadas.
Esto es importante para la paginación, que verá en la próxima lección.
SELECT id, name, price
FROM products
ORDER BY price DESC, id;Combinar expresiones y columnas
Las claves de ordenación pueden combinar columnas simples y expresiones. Cada clave es independiente.
Esto ordena primero por el valor del inventario de forma descendente y después alfabéticamente por nombre como criterio de desempate.
SELECT name, price, stock
FROM products
ORDER BY price * stock DESC, name ASC;Ordenar por un booleano para elevar un grupo
Un truco práctico es ordenar por una expresión booleana para colocar un grupo al principio o al final. En PostgreSQL, false se ordena antes que true.
Esto muestra primero los artículos disponibles (stock > 0) y, dentro de cada grupo, los más baratos.
SELECT name, stock, price
FROM products
ORDER BY (stock = 0), price;Controlar la posición de los valores NULL
De forma predeterminada en PostgreSQL, NULL se ordena al final en orden ascendente y al principio en orden descendente. Puede cambiar este comportamiento con NULLS FIRST o NULLS LAST en cualquier clave.
SELECT name, discount
FROM products
ORDER BY discount DESC NULLS LAST;Integrarlo todo
Una ordenación real con varias claves puede combinar direcciones, expresiones y el tratamiento de valores NULL. Léala de izquierda a derecha: cada clave refina la anterior.
SELECT category, name, price, rating
FROM products
ORDER BY category ASC,
rating DESC NULLS LAST,
price ASC;Comprobación rápida
Considere ORDER BY category, price DESC.
Resumen
En resumen, la ordenación por varias columnas:
- Enumere las claves de ordenación separadas por comas; las primeras tienen prioridad
- Cada clave tiene su propio
ASC/DESC - Termine con una columna única para obtener un orden determinista
- Controle los valores ausentes con
NULLS FIRST/NULLS LAST
A continuación, limitará el número de filas devueltas con LIMIT y OFFSET.
SELECT category, name, price
FROM products
ORDER BY category ASC, price DESC, id;Preguntas frecuentes
¿La lección «Ordenación por varias columnas» es gratis?
Sí — el texto completo de «Ordenación por varias columnas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de SQL Academy, actualiza a CoddyKit PRO. El curso de SQL Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Ordenación por varias columnas»?
Resuelva los empates con claves de ordenación secundarias Practicas SQL Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar SQL Academy?
No se requiere experiencia previa. SQL Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Ordenación por varias columnas»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de SQL Academy?
Sí. Cada lección de SQL Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Ordenación con ORDER BY
- Ordenación por varias columnas
- LIMIT y OFFSET
- Cómo encontrar los registros superiores e inferiores