How to keep only one row of a table, removing duplicate rows?

前端 未结 8 1595
小蘑菇
小蘑菇 2020-12-08 16:41

I have a table that has a lot of duplicates in the Name column. I\'d like to only keep one row for each.

The following lists the duplicates, but I don\'t know how to

相关标签:
8条回答
  • 2020-12-08 17:09
    WITH CTE AS
    (
        SELECT ROW_NUMBER() OVER (PARTITION BY [emp_id] ORDER BY [emp_id]) AS Row, * FROM employee_salary
    )
    
    
    DELETE FROM CTE
    WHERE ROW <> 1
    
    0 讨论(0)
  • 2020-12-08 17:10

    See the following question: Deleting duplicate rows from a table.

    The adapted accepted answer from there (which is my answer, so no "theft" here...):

    You can do it in a simple way assuming you have a unique ID field: you can delete all records that are the same except for the ID, but don't have "the minimum ID" for their name.

    Example query:

    DELETE FROM members
    WHERE ID NOT IN
    (
        SELECT MIN(ID)
        FROM members
        GROUP BY name
    )
    

    In case you don't have a unique index, my recommendation is to simply add an auto-incremental unique index. Mainly because it's good design, but also because it will allow you to run the query above.

    0 讨论(0)
提交回复
热议问题