如果我有三个重复的行,我如何保留第一行并删除其他两行?

时间:2017-02-06 23:14:10

标签: sql sql-server duplicates

反过来说,如果我有三个唯一的行,那么命令如何用于实现这一目标呢?

3 个答案:

答案 0 :(得分:0)

只需使用" distinct"。如果要删除剩余的行,请使用本主题How can I remove duplicate rows?

中的说明

答案 1 :(得分:0)

以下查询应该用于删除重复记录

delete from table 
where rowid not in (
select min(rowid) from table group by unique_id
)

好的,对于sql server,请尝试以下查询

delete from table 
    where %%physloc%% not in (
    select min(%%physloc%%) from table group by unique_id
    )

上面对sql server的查询可能会很慢,因为我相信它会进行全表扫描。

答案 2 :(得分:0)

所以你有一个包含3个相同行和更多行的表...

CREATE TABLE people (id,name) AS
          SELECT 42, 'Arthur Dent'
UNION ALL SELECT 43, 'Zaphod Beeblebrox'
UNION ALL SELECT 42, 'Arthur Dent'
UNION ALL SELECT 44, 'Tricia McMillan'
UNION ALL SELECT 42, 'Arthur Dent'
;

除了创建一个带有去除行的全新表格之外,几乎没有办法,并确保它获得原始表格的名称。这是:

ALTER TABLE people RENAME TO people_with_dupes;
CREATE TABLE people AS
SELECT DISTINCT * FROM people_with_dupes;

现在people表被删除了:

SELECT * FROM people ORDER BY id;

id|name
42|Arthur Dent
43|Zaphod Beeblebrox
44|Tricia McMillan