Al terminar, podrás
- Obtener valores o combinaciones únicas.
- Predecir qué ocurre al seleccionar más de una columna.
- Distinguir la deduplicación del resultado de una modificación de la tabla.
Recupera lo aprendido: ¿ORDER BY elimina repeticiones o solamente ordena la salida?
La idea clave
DISTINCT elimina filas repetidas del resultado de una consulta. La comparación se realiza sobre la combinación completa de expresiones seleccionadas: si eliges dos columnas, ambas deben coincidir para que dos filas sean duplicadas entre sí.
No limpia la tabla: DISTINCT solo cambia lo que devuelve esa consulta. Las filas originales continúan almacenadas.
La sintaxis básica
SELECT DISTINCT columna1, columna2
FROM tabla;DISTINCT se escribe una sola vez, inmediatamente después de SELECT. Se aplica a toda la lista de salida.
Ejemplo paso a paso
| id | ciudad |
|---|---|
| 1 | Madrid |
| 2 | Valencia |
| 3 | Madrid |
| 4 | Bilbao |
| 5 | Sevilla |
| 6 | Madrid |
| 7 | Bilbao |
| 8 | Valencia |
| 9 | Madrid |
| 10 | Zaragoza |
| 11 | Sevilla |
| 12 | A Coruña |
Queremos una lista de ciudades diferentes y fácil de leer.
SELECT DISTINCT ciudad
FROM clientes
ORDER BY ciudad;| ciudad |
|---|
| A Coruña |
| Bilbao |
| Madrid |
| Sevilla |
| Valencia |
| Zaragoza |
Cómo funciona
- La consulta obtiene la columna
ciudadde todas las filas. DISTINCTconserva una sola fila por cada valor diferente.ORDER BYorganiza la lista resultante; no participa en la eliminación de duplicados.
Un error habitual
Colocar DISTINCT entre las columnas
SELECT ciudad, DISTINCT nombre
FROM clientes;DISTINCT debe aparecer justo después de SELECT. No puedes aplicarlo a una sola columna dentro de la misma lista mientras dejas las demás fuera de la comparación.
Practica con datos
Laboratorio SQL
Resuelve la consulta
Escribe una consulta que devuelva las categorías diferentes de productos, ordenadas alfabéticamente.
Resultado esperado: 5 filas con categoria. Respeta el orden de filas solicitado.
Ver tablas y datos
Cargando la estructura del ejercicio…
Escribe DISTINCT justo después de SELECT.
Selecciona categoria.
Ordena el resultado para facilitar su lectura.
Solución
SELECT DISTINCT categoria FROM productos ORDER BY categoria;El resultado contiene una fila por cada categoría diferente.
Puedes consultar la solución y volver a intentarlo. La práctica se completa cuando tu consulta funciona.
La consulta usa datos ficticios y se ejecuta solo en este navegador.
Fuentes técnicas consultadas
Las referencias confirman que DISTINCT elimina filas duplicadas del resultado y que la comparación abarca todas las expresiones seleccionadas.
- PostgreSQL: DISTINCT en la lista SELECT
- PostgreSQL: orden de procesamiento de SELECT DISTINCT
- SQLite: eliminación de filas duplicadas en SELECT
Comprueba si puedes explicarlo
Hay dos clientes distintos de Madrid. ¿DISTINCT ciudad, nombre los combina si sus nombres son diferentes?
Ver respuesta razonada
No. DISTINCT compara la fila completa del resultado. Para obtener una sola fila por ciudad, selecciona únicamente DISTINCT ciudad. Ninguna de esas consultas borra clientes.
Responde antes de abrir la explicación. Si necesitaste ayuda, cierra la respuesta y vuelve a explicarlo con tus palabras antes de dar la lección por aprendida.
Qué debes recordar
- DISTINCT se escribe inmediatamente después de SELECT.
- La combinación completa de columnas determina si dos filas son duplicadas.
- DISTINCT no modifica ni elimina filas almacenadas.
A continuación: Continúa con Resume datos con COUNT, SUM, AVG, MIN y MAX.