SQL 根据两列删除重复记录

Posted

技术标签:

【中文标题】SQL 根据两列删除重复记录【英文标题】:SQL Delete duplicate records based on two columns 【发布时间】:2021-11-11 16:13:45 【问题描述】:

在postgresql中

我需要一个查找表以在两列中具有唯一值。我有这个汽车清单,但高尔夫在汽车和商店列上重复。我想删除汽车和商店相同的所有记录(因为马力和公里将相同)

所以输出表应该是:

谢谢!!

【问题讨论】:

请标记数据库平台。听起来您还需要添加适当的完整性约束,例如主键或唯一性索引,以防止将来重复 它实际上只是一个临时查找表,但是一旦删除重复项,主键将是 car and shop 您可以通过查询识别重复项,但要删除除一个之外的所有重复项,您可能需要使用游标运行过程。 这能回答你的问题吗? Delete duplicate rows from small table @Johnny 重复值基于汽车、商店、马力和 KM 或(汽车和商店) 【参考方案1】:

你可以使用distinct on:

select distinct on (car, shop) t.*
from t
order by car, shop, day;

如果你想实际删除记录:

delete from t
   where t.day = (select min(t2.day)
                  from t2
                  where t2.car = t.car and t2.shop = t.shop
                 );

【讨论】:

以上是关于SQL 根据两列删除重复记录的主要内容,如果未能解决你的问题,请参考以下文章

几个删除重复记录的SQL语句

根据两列重复值找出唯一的***记录[重复]

Oracle SQL 根据列删除重复记录

查询及删除重复记录的SQL语句

SQL删除重复记录

查询及删除重复记录