根据列删除SQL中的重复项

时间:2019-09-28 17:20:16

标签: sql sqlite

我正在尝试从数据库中删除孤立的行。假设我有这张桌子t:

add

我正在尝试根据最旧的record_date删除重复的条目,同时评估名称和uniqueid以确保它们是实际的重复项(不是仅基于名称的重复项)。不仅仅基于唯一标识进行简单评估的问题在于,某些行的唯一标识具有空值。因此,在示例表中,我想删除第一行和最后一行。

3 个答案:

答案 0 :(得分:0)

我认为您正在寻找max(),并且不想考虑null唯一标识,因此请使用where来过滤null值

name,max(record_date),uniqueid from table_name
where uniqueid is not null
group by name,uniqueid

答案 1 :(得分:0)

您可以在下面尝试-使用聚集和group by和where子句来过滤null uniqueid

select name,uniqueid,max(record_date)
from tablename
where uniqueid is not null
group by name,uniqueid

答案 2 :(得分:0)

您可以使用img src="http://localhost/mikelawson/zeco/pouvoir 046.jpg" alt="mikelawson/zeco/pouvoir 046""

delete

注意:以上内容仅保留名称/唯一标识对的最新记录。

如果您要查询中的唯一行,我建议:

delete from t
    where t.record_date < (select max(t2.record_date)
                           from t t2
                           where t2.name = t.name and
                                 t2.uniqueid = t.uniqueid
                          );