Kodokon kodokon.com

Ordenar y eliminar duplicados: ORDER BY, LIMIT, DISTINCT

Domina la ordenación de resultados con ORDER BY, la limitación del número de filas con LIMIT y la eliminación de duplicados con DISTINCT.

6 min · 3 preguntas

Abrir esta lección en Kodokon

De forma predeterminada, el orden de las filas que devuelve un SELECT no está garantizado: la base de datos las devuelve como le resulta más conveniente. Para imponer un orden, añade ORDER BY seguido de una columna. La ordenación es ascendente de forma predeterminada (puedes hacerlo explícito con ASC); añade DESC para una ordenación descendente.

SQL
SELECT title, price FROM books ORDER BY price;

SELECT title, price FROM books ORDER BY price DESC;
Del más barato al más caro, y luego al revés

Puedes ordenar por varias columnas: ORDER BY genre, price DESC ordena primero por género y luego, dentro del mismo género, del más caro al más barato. La cláusula LIMIT conserva solo las primeras N filas del resultado: combinada con ORDER BY, te da un "top N". LIMIT 3 OFFSET 2 además omitiría las primeras 2 filas.

SQL
SELECT title, price FROM books
ORDER BY price DESC
LIMIT 3;
Los 3 libros más caros

Una última herramienta: DISTINCT, colocada justo después de SELECT, elimina los duplicados del resultado. Nuestra tabla contiene 7 libros pero solo 3 géneros diferentes: sin DISTINCT, la consulta de abajo mostraría 7 filas con repeticiones.

SQL
SELECT DISTINCT genre FROM books;

SELECT DISTINCT author FROM books;
3 géneros únicos, luego 6 autores únicos

Prueba de conocimientos

Comprueba que has retenido los puntos clave de esta lección.

  1. ¿Cómo se ordenan los libros del más caro al más barato?
    • ORDER BY price
    • ORDER BY price DESC
    • SORT BY price DESC
  2. ¿Qué devuelve SELECT DISTINCT genre FROM books; en nuestra tabla?
    • Los 7 géneros, uno por libro
    • Cada género solo una vez, es decir, 3 filas
    • El género más frecuente
  3. ¿Qué devuelve LIMIT 5 cuando se usa sin ORDER BY?
    • Las 5 filas más recientes
    • 5 filas en un orden que no está garantizado
    • Un error de sintaxis