DISTINCT es útil en ciertas circunstancias, pero tiene el inconveniente de que puede aumentar la carga en el motor de consultas para realizar la ordenación (ya que necesita comparar el conjunto de resultados consigo mismo para eliminar los duplicados)
A continuación se presentan soluciones alternativas:
1. Eliminar duplicados usando Row_Number .
WITH CTE (Col1, Col2, Col3, DuplicateCount) AS ( SELECT Col1, Col2, Col3, ROW_NUMBER() OVER(PARTITION BY Col1, Col2, Col3 ORDER BY Col1) AS DuplicateCount FROM MyTable ) SELECT * from CTE Where DuplicateCount = 1
2. Elimine los duplicados usando la opción de unirse a
YourTable
emp_name emp_address sex matial_status uuuu eee m s iiii iii f s uuuu eee m s
SELECT emp_name, emp_address, sex, marital_status from YourTable a WHERE NOT EXISTS (select 1 from YourTable b where b.emp_name = a.emp_name and b.emp_address = a.emp_address and b.sex = a.sex and b.create_date >= a.create_date)
3. Eliminar duplicados usando group By
La idea es agrupar de acuerdo con todas las columnas que se seleccionarán en la salida. Por ejemplo, si deseamos imprimir valores únicos de «Nombre, Apellido y Número de móvil», simplemente podemos agrupar por los tres.
SELECT FirstName, LastName, MobileNo FROM CUSTOMER GROUP BY FirstName, LastName, MobileNo;