Eliminar duplicados, DISTINCT

En algunas situaciones, una consulta SQL de selección puede devolver filas de datos repetidas.

Por ejemplo, vamos a mostrar la columna class de la tabla Student_in_class de la base de datos que guarda la información sobre el horario de clases de un colegio.

MySQL 8.4
SELECT class FROM Student_in_class;
class
9
9
9
9
9
9
9
9
9
9
9
9
9
8
8
8
8
8
8
8
8
8
8
8
6
6
6
6
6
6
6
6
6
6
6
5
5
5
5
5
5
5
5
4
4
4
4
4
4
4
4
4
3
3
3
3
3
3
3
3
2
2
2
2
2
2
2
1
1
1
1
1
1
1

Como en una misma clase puede haber varios estudiantes, no es de extrañar que en el resultado veamos valores repetidos. Para evitar este tipo de duplicados en el resultado existe la palabra clave DISTINCT.

Sintaxis de DISTINCT

MySQL 8.4
SELECT [DISTINCT] campos_tabla FROM nombre_tabla;
  • [ ]parte opcional
DISTINCT

Deja en el resultado solo las filas únicas: de varias filas iguales se muestra solo una.

Palabra claveOpcional
campos_tabla

Las columnas que aparecerán en el resultado. La unicidad se comprueba teniendo en cuenta todas las columnas indicadas a la vez.

nombre_tabla
La tabla de la que se seleccionan los datos.

Es decir, en nuestro caso, la consulta para obtener las clases únicas en las que hay al menos un estudiante quedaría así:

MySQL 8.4
SELECT DISTINCT class FROM Student_in_class;
class
9
8
7
6
5
4
3
2
1

DISTINCT en varias columnas

Si usas la palabra clave DISTINCT con dos o más columnas, se eliminarán los registros que tengan los mismos valores en todas ellas.

Es decir, para una tabla como esta

first_namelast_name
JohnScott
WilliamDawson
RaulHartman
WilliamHartman
JohnScott
JohnHartman

una consulta con la palabra clave DISTINCT devolvería todas las combinaciones de nombres y apellidos, salvo el «John Scott» duplicado.

MySQL 8.4
SELECT DISTINCT first_name, last_name FROM User;
first_namelast_name
JohnScott
WilliamDawson
RaulHartman
WilliamHartman
JohnHartman