2016-07-21 13 views
1

Ich habe eine Tabelle mit 3 Spalten und die erste Spalte ist "Name". Einige Namen werden zweimal eingegeben, einige dreimal und einige mehr. Ich möchte nur einen Wert für jeden Namen behalten und die zusätzlichen Zeilen löschen. Es gibt keine Primärschlüssel oder ID-Spalte. Es gibt ungefähr 1 Million Zeilen in der Tabelle. Möchten Sie mit einer Abfrage löschen (vorzugsweise) in SQL 14. Kann jemand bitte helfen?löschen mehrere Zeilen mit dem gleichen Wert in Sql 14

Name column2 column3 
Suzy   
Suzy   
Suzy   
John   
John   
George  
George  
George  
George  

Möchten sie haben, wie:

Name column2 column3 
Suzy   
John   
George 

Vielen Dank im Voraus

Antwort

2

Sie row_number Funktion nutzen zu können, wie diese versuchen,

WITH CTE 
AS (
    SELECT NAME 
     ,column2 
     ,column3 
     ,RN = ROW_NUMBER() OVER (
      PARTITION BY NAME ORDER BY NAME 
      ) 
    FROM <YourTableName> 
    ) 
DELETE 
FROM CTE 
WHERE RN > 1 
Verwandte Themen