Conceptos básicos de SELECT DISTINCT
Devuelva únicamente filas únicas
Conceptos básicos de SELECT DISTINCT es una lección gratuita de SQL Academy en CoddyKit. Esta es la lección 1 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.
Por qué aparecen duplicados
Las tablas suelen contener valores repetidos. Una tabla customers podría incluir la misma city en miles de filas. Cuando solo le interesa el conjunto de valores distintos, un SELECT normal devuelve todas las filas, incluidos los repetidos.
SELECT DISTINCT agrupa las filas idénticas en una sola. En esta lección aprenderá los conceptos básicos para devolver únicamente resultados únicos.
SELECT city FROM customers;
-- Returns one row per customer, with many repeated citiesLa palabra clave DISTINCT
DISTINCT va justo después de SELECT. Elimina las filas duplicadas del conjunto de resultados y conserva una sola copia de cada combinación única de las columnas seleccionadas.
SELECT DISTINCT city
FROM customers;
-- One row per unique cityDISTINCT se aplica a toda la fila
Un error común es pensar que DISTINCT se aplica a una sola columna. En realidad, se aplica a la fila seleccionada completa. Todas las columnas que indique participan en la decisión de si dos filas son duplicadas.
A continuación, las filas se deduplican únicamente según el valor de city, porque esa es la única columna seleccionada.
SELECT DISTINCT country
FROM customers;
-- Unique countries across all customersDatos de ejemplo
Imagine una tabla pequeña de orders. Observe los valores repetidos de status y country. Usaremos esta estructura durante toda la lección.
id=1, status='paid', country='US'id=2, status='paid', country='US'id=3, status='shipped', country='DE'id=4, status='paid', country='DE'
CREATE TABLE orders (
id int PRIMARY KEY,
status text,
country text,
amount numeric(10,2)
);DISTINCT con una sola columna
Seleccionar DISTINCT status de los datos de ejemplo devuelve los valores únicos de status: paid y shipped. Las cuatro filas se reducen a dos.
SELECT DISTINCT status
FROM orders;
-- paid
-- shippedNULL se trata como un solo valor
Aunque normalmente NULL no es igual a nada (ni siquiera a sí mismo), DISTINCT trata todos los valores NULL como un único grupo. Si una columna tiene muchas filas con NULL, obtendrá exactamente un NULL en el resultado distinto.
SELECT DISTINCT shipped_at
FROM orders;
-- All NULL shipped_at rows collapse into a single NULL rowDISTINCT con ORDER BY
Normalmente querrá ordenar los valores únicos. DISTINCT se ejecuta primero para crear el conjunto de valores únicos y después ORDER BY lo ordena. Cualquier columna de ORDER BY también debe aparecer en la lista de SELECT cuando se usa DISTINCT.
SELECT DISTINCT country
FROM orders
ORDER BY country;
-- DE
-- USDISTINCT frente a GROUP BY
SELECT DISTINCT col y SELECT col GROUP BY col producen las mismas filas únicas. Use DISTINCT cuando solo quiera valores únicos; recurra a GROUP BY cuando también necesite agregaciones como COUNT para cada grupo.
-- These two return the same set of countries:
SELECT DISTINCT country FROM orders;
SELECT country FROM orders
GROUP BY country;DISTINCT tiene un coste
Eliminar duplicados no es gratis. La base de datos debe ordenar o aplicar hashing a todas las filas candidatas para encontrar las únicas. En tablas grandes, esto añade trabajo de CPU y memoria, así que solicite DISTINCT únicamente cuando realmente necesite valores únicos.
-- Avoid blind DISTINCT on every query.
-- If the column is already unique (e.g. a PRIMARY KEY),
-- DISTINCT does nothing useful but still costs work:
SELECT DISTINCT id FROM orders; -- id is already uniqueDISTINCT en expresiones
Puede aplicar DISTINCT a una expresión calculada, no solo a una columna sin modificar. La base de datos evalúa la expresión para cada fila y después deduplica los resultados.
SELECT DISTINCT upper(country) AS country_code
FROM orders
ORDER BY country_code;
-- DE
-- USCrear una lista de opciones
Un uso práctico de DISTINCT es rellenar una lista desplegable o de filtros en una aplicación: obtener los estados únicos para mostrar al usuario todas las opciones posibles que existen actualmente en los datos.
SELECT DISTINCT status
FROM orders
ORDER BY status;
-- paid
-- shippedComprobación rápida
¿Dónde debe colocarse la palabra clave DISTINCT y qué elementos deduplica?
Resumen
Ha aprendido los conceptos básicos de SELECT DISTINCT:
- Elimina las filas duplicadas del conjunto de resultados.
- Se aplica a la fila seleccionada completa, no a una sola columna.
- Todos los valores
NULLse agrupan en un único valor. ORDER BYse ejecuta después de la deduplicación; sus columnas deben estar seleccionadas.- Requiere trabajo adicional, por lo que debe usarlo solo cuando sea necesario.
A continuación: ampliar DISTINCT a varias columnas.
SELECT DISTINCT status
FROM orders
ORDER BY status;Preguntas frecuentes
¿La lección «Conceptos básicos de SELECT DISTINCT» es gratis?
Sí — el texto completo de «Conceptos básicos de SELECT DISTINCT» 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 «Conceptos básicos de SELECT DISTINCT»?
Devuelva únicamente filas únicas 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 1 de 4.
¿Cuánto tiempo toma la lección «Conceptos básicos de SELECT DISTINCT»?
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
- Conceptos básicos de SELECT DISTINCT
- DISTINCT en varias columnas
- DISTINCT ON de PostgreSQL
- Recuento de valores únicos