删除一列中具有重复值但在其他列中具有不同值的行

时间:2014-06-27 19:41:08

标签: sql

我有3列的表格:

ID, name, role

有些名称是重复的,但它们都有唯一的ID,如何在表格中删除所有具有重复名称的行(不是全部,每个都留一个)?

1 个答案:

答案 0 :(得分:2)

name分组并选择最低的唯一id。删除不在该列表中的所有记录

delete from your_table
where id not in
(
  select min(id) 
  from your_table
  group by name
)

如果你使用MySQL,你需要另一个子查询,因为MySQL不允许你从你选择的同一个表中删除:

delete from your_table
where id not in
(
  select * from 
  (
    select min(id) 
    from your_table
    group by name
  ) tmp_tbl
)