Unidad 3. Consultas simples (IX)


3.11. Eliminar filas duplicadas DISTINCT/ALL

SQL no elimina las filas duplicadas en el resultado de la consulta, si nosotros no queremos que se repitan las filas, tenemos la cláusula DISTINCT.
Al incluir la cláusula DISTINCT en la SELECT, se eliminará del resultado las repeticiones de filas de resultado. Si por el contrario queremos que aparezcan todas las filas seleccionadas podemos incluir la cláusula ALL o nada, ya que ALL es el valor por defecto.

Listar los nº de empleado de los directores de las oficinas.

SELECT  dir

FROM oficinas;
dir
106
104
105
108
108
108
108
NULL
NULL

Si un mismo empleado dirige varias oficinas (por ejemplo el 108), su código aparece repetido en el resultado. Para evitarlo modificamos la consulta:

SELECT DISTINCT dir

FROM oficinas;
dir
NULL
104
105
106
108

Han desaparecido los valores duplicados.

Los que se eliminan son valores duplicados de filas del resultado, por ejemplo:

SELECT DISTINCT dir, region

FROM oficinas;
dir region
NULL este
NULL norte
104 este
105 este
106 este
108 centro
108 oeste

Ahora el 108 aparece dos veces porque las dos filas donde aparece no son iguales (porque tienen distinta región).

NOTA: La cláusula DISTINCT hace que la consulta tarde algo más en ejecutarse debido al proceso adicional de buscar y eliminar las repeticiones, por lo que se aconseja utilizarla únicamente cuando sea imprescindible.

Para practicar puedes realizar este Ejercicio Eliminar filas duplicadas.

Febrero-2010
Pág. 3.9

Atrás  Inicio  Adelante



.