SQL | Eliminar duplicados sin distintivo

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;

Publicación traducida automáticamente

Artículo escrito por update y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *