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
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.