La consulta SQL DISTINCT se usa para obtener valores únicos de las tablas usando la instrucción SELECT en el SQL.
Puede haber una situación que surja cuando desee obtener los valores únicos de las tablas, pero también hay valores duplicados dentro de la tabla. En tal caso, debe usar la consulta SELECT DISTINCT para eliminar valores duplicados y obtener valores únicos de la tabla.
Sintaxis de la sentencia SELECT DISTINCT:
SELECT DISTINCT columnname1, columnname2 FROM table_name;
Considere las tablas de empleados existentes que tienen los siguientes registros:
ID DE EMPLEADO | FIRST_NAME | APELLIDO | SALARIO | CIUDAD | DEPARTAMENTO | ID DE ADMINISTRADOR |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACULO | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | ORACULO | 1 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACULO | 1 |
2002 | BHAVESH | JAÍN | 65500 | PUNE | FMW | 2 |
2003 | RUCHIKA | JAÍN | 50000 | BOMBAY | PRUEBA | 4 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3002 | ANUJA | WANRE | 50500 | JAIPUR | FMW | 2 |
3003 | DEEPAM | JAUHARI | 58500 | BOMBAY | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | BOMBAY | PRUEBA | 4 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORACULO | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | PRUEBA | 4 |
Entendamos el SELECT DISTINCT con la ayuda de un ejemplo.
Ejemplo 1: Escriba una consulta para obtener los detalles de los empleados cuyo salario de empleado sea superior a 55000 sin utilizar la palabra clave DISTINCT.
SELECT * FROM EMPLOYEES WHERE SALARY > 55000;
En la declaración anterior, hemos obtenido los detalles del empleado de la tabla del empleado cuyo salario del empleado es superior a 55000, incluidos los valores duplicados.
El resultado de la siguiente instrucción:
ID DE EMPLEADO | FIRST_NAME | APELLIDO | SALARIO | CIUDAD | DEPARTAMENTO | ID DE ADMINISTRADOR |
1001 | VAIBHAVI | MISHRA | 65000 | PUNE | ORACULO | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | ORACULO | 1 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACULO | 1 |
2002 | BHAVESH | JAÍN | 65500 | PUNE | FMW | 2 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3003 | DEEPAM | JAUHARI | 58500 | BOMBAY | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | BOMBAY | PRUEBA | 4 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORACULO | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | PRUEBA | 4 |

El resultado anterior muestra que hemos obtenido los detalles de los empleados, incluidos los valores duplicados.
Ejemplo 2: Escriba una consulta para mostrar el salario de los empleados de la tabla de empleados cuyo salario de empleado sea superior a 55000 usando la palabra clave DISTINCT.
SELECT DISTINCT (SALARY) FROM EMPLOYEES WHERE SALARY > 55000;
En la declaración anterior, estamos recuperando el salario del empleado de la tabla del empleado cuyo salario es mayor a 55000, donde estamos eliminando los valores duplicados. Salario distinto mostrará un salario único de la tabla del empleado.
El resultado de la siguiente instrucción:
SALARIO |
65000 |
60000 |
55500 |
65500 |
58500 |
60500 |

En el primer ejemplo, hemos obtenido los detalles del empleado cuyo salario es superior a 55000. El resultado de la consulta incluye valores duplicados. Pero en el segundo ejemplo, ejecutamos la misma consulta para mostrar el salario de un empleado cuyo salario es superior a 55000. La consulta muestra el resultado eliminando los valores duplicados porque usamos la palabra clave DISTINCT seguida de la columna de salario.
Ejemplo 3: Escriba una consulta para mostrar la ciudad y el salario de los empleados de la tabla de empleados sin usar una palabra clave distinta.
SELECT SALARY, CITY FROM EMPLOYEES;
Hemos mostrado el salario del empleado y el nombre de la ciudad de la tabla del empleado en la declaración anterior, incluidos los valores duplicados.
El resultado de la siguiente instrucción:
SALARIO | CIUDAD |
65500 | PUNE |
60000 | NOIDA |
50500 | JAIPUR |
55500 | CHANDIGARH |
65500 | PUNE |
50000 | BOMBAY |
55500 | PUNE |
50500 | JAIPUR |
58500 | BOMBAY |
60500 | BOMBAY |
54500 | NOIDA |
60000 | DELHI |
55500 | DELHI |

Ejemplo 4: Escriba una consulta para mostrar la ciudad y el salario de los empleados de la tabla de empleados utilizando distintas palabras clave.
SELECCIONE SALARIO DISTINTO, CIUDAD DE EMPLEADOS;
Obtuvimos el salario y la ciudad del empleado de la tabla de empleados en la declaración anterior. Pero hemos obtenido un valor único que no se repite en toda la tabla usando la palabra clave DISTINCT.
El resultado de la siguiente instrucción:
SALARIO | CIUDAD |
65500 | PUNE |
60000 | NOIDA |
50500 | JAIPUR |
55500 | CHANDIGARH |
50000 | BOMBAY |
55500 | PUNE |
58500 | BOMBAY |
60500 | BOMBAY |
54500 | NOIDA |
60000 | DELHI |
55500 | DELHI |

Ejemplo 5: Escriba una consulta para mostrar el apellido y el departamento de un empleado de la tabla de empleados donde el nombre del departamento comienza con 'O' sin usar la palabra clave DISTINCT;
SELECT LAST_NAME, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT LIKE 'O%';
En la declaración anterior, obtuvimos los apellidos de los empleados, los departamentos de la tabla de empleados cuyos nombres de departamento comienzan con 'O', incluidos los valores duplicados.
El resultado de la siguiente instrucción:
LAST_NAME | DEPARTAMENTO |
MISHRA | ORACULO |
SHARMA | ORACULO |
SHARMA | ORACULO |
AGARWAL | ORACULO |

Solo se muestran cuatro registros de aquellos empleados cuyo departamento comienza con 'O'.
Ejemplo 6: Escriba una consulta para mostrar el apellido y el departamento de un empleado de la tabla de empleados donde el nombre del departamento comienza con 'O' usando la palabra clave DISTINCT;
SELECT DISTINCT LAST_NAME, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT LIKE 'O%';
Usamos la misma consulta en el ejemplo 5, solo agregamos la palabra clave DISTINCT justo antes del nombre de las columnas que mostrará valores únicos de la tabla del empleado cuyo nombre de departamento comienza con 'O'.
El resultado de la siguiente instrucción:
LAST_NAME | DEPARTAMENTO |
MISHRA | ORACULO |
SHARMA | ORACULO |
AGARWAL | ORACULO |

La misma consulta que hemos ejecutado en la consulta anterior, agregamos la palabra clave DISTINCT justo antes de las columnas. El resultado que obtenemos difiere del ejemplo anterior porque la pantalla de resultados tiene valores únicos.
Ejemplo 7: Escriba una consulta para contar el salario de los empleados de la tabla de empleados sin usar una palabra clave distinta.
SELECT COUNT (SALARY) AS TOTAL SALARY FROM EMPLOYEES;
En la declaración anterior, hemos contado el número total de salarios de la tabla del empleado, incluidos los valores duplicados.
El resultado de la siguiente instrucción:
SALARIO TOTAL |
13 |

Ejemplo 8: Escriba una consulta para contar el salario de los empleados de la tabla de empleados usando una palabra clave distinta.
SELECT COUNT(DISTINCT SALARY) AS TOTAL SALARY FROM EMPLOYEES;
En la declaración anterior, hemos contado el número total de salarios de la tabla del empleado, excluyendo los valores duplicados.
El resultado de la siguiente instrucción:
SALARIO TOTAL |
8 |
