sql >> Base de Datos >  >> RDS >> Database

Cómo eliminar filas duplicadas en SQL

Problema:

Le gustaría eliminar las filas duplicadas del conjunto de resultados de una consulta para que cada fila aparezca solo una vez.

Ejemplo:

Nuestra base de datos tiene una tabla llamada clothes con datos en las siguientes columnas:id , name , color y year_produced .

id nombre color año_producido
1 Camiseta amarillo 2015
2 chaqueta azul 2016
3 vaqueros negro 2015
4 chaqueta azul 2015
5 chaqueta verde 2016
6 chaqueta amarillo 2017
7 sombrero amarillo 2017

Obtengamos los nombres y colores no repetidos de la ropa producida antes de 2017.

Solución:

SELECT DISTINCT name,
  color
FROM clothes
WHERE year_produced < 2017;

Aquí está el resultado:

nombre color
Camiseta amarillo
chaqueta azul
jeans negro
chaqueta verde

Observe que el azul aparece solo una vez en este conjunto de resultados, aunque aparece dos veces en la tabla original. Esto se debe a que especificamos que queremos seleccionar solo aquellas filas para las que la combinación de nombre y color es única.

Discusión:

Simplemente use el DISTINCT palabra clave después de SELECT si desea seleccionar solo filas no repetidas. Esta palabra clave obliga a la consulta a descartar las filas duplicadas, basándose únicamente en las columnas que enumeró.

Este es un ejemplo de cómo seleccionar solo las filas para las que el nombre del elemento es único:

SELECT DISTINCT name
FROM clothes
WHERE year_produced < 2017;

A diferencia de la consulta anterior, esta devuelve solo tres registros:

nombre
Camiseta
vaqueros

Si bien hay cuatro jeans en la tabla original (dos azules, uno verde y uno amarillo), el artículo aparece solo una vez en este conjunto de resultados gracias a DISTINCT palabra clave.