2011-07-21 13 views
11

duplicados posible:
SQL - How can I remove duplicate rows?TSQL eliminar filas duplicadas en alguna columna sólo

ejemplo, esto es mi mesa:

SiteKey, nombre, ciudad

El SiteKey es autoincremento, Nombre es diferente, pero algunas veces 2 Sitekey tendrá la misma Ciudad.

Ejemplo:

1, A , CityA 
2, B, CityB 
3, C, CityA 
4, D, CityF 

por lo que necesita para eliminar las filas 3, y mantener filas 1,2,4 solamente.

es en SQL 2005 en adelante.

gracias por su ayuda.

+1

Aquí hay un enlace a una pregunta que responde a la suya: http://stackoverflow.com/questions/18932/sql-how-can-i-remove-duplicate-rows –

Respuesta

12

Aquí hay 2 maneras en que puede hacerlo.

DELETE t 
FROM 
<table> t 
WHERE EXISTS 
    (SELECT 1 FROM <table> 
    WHERE t.SiteKey > SiteKey AND t.City = City) 


DELETE t 
FROM 
<table> t 
INNER JOIN <table> t2 
ON t.City = t2.City 
AND t.SiteKey > SiteKey 
+0

buen ejemplo de usar EXISTS – Chains

4

Este es el estándar SQL

DELETE 
    mytable 
WHERE 
    SiteKey NOT IN 
    (
    SELECT 
     MIN(SiteKey) 
    FROM 
     Mytable 
    GROUP BY 
     City 
    ) --Don't need 'KeepMe' 

A continuación, añadir una restricción única

ALTER TABLE MyTable WITH CHECK ADD 
    CONSTRAINT UQ_MyTable_City UNIQUE (City) 
+0

El SQL estándar no es un trabajo para mí en SQL 2005 Query. –

+0

@Ken Le: "No funciona"? ¿Cómo no funciona ... – gbn

+0

nvm, pero probé usar IZQUIERDA EXTERNA Unirse y quitar la columna tiene nulo, su trabajo ... Gracias a su ayuda tpp, gbn. Que tengas un buen día. –

Cuestiones relacionadas