选择MySQL中的最后一个重复行

选择MySQL中的最后一个重复行,mysql,Mysql,使用从MySQL表中选择重复行项目 SELECT * FROM `table` GROUP BY `col1`,`col2` Having COUNT(`col1`)>1 and COUNT(`col2`)>1 实际结果 上面的查询返回第一个重复条目。从上面的数据来看,第1行和第7行在同一列COL1、col2中包含重复字段 但我需要得到最后一份副本。突出显示的重复行 预期结果 我需要得到最后一份副本 如何定义最后一个副本?在数据库表中,记录不是固有的顺序,并且您没有告诉我们应该使用

使用从MySQL表中选择重复行项目

SELECT * FROM `table` GROUP BY `col1`,`col2` Having COUNT(`col1`)>1 and COUNT(`col2`)>1
实际结果

上面的查询返回第一个重复条目。从上面的数据来看,第1行和第7行在同一列COL1、col2中包含重复字段

但我需要得到最后一份副本。突出显示的重复行

预期结果

我需要得到最后一份副本

如何定义最后一个副本?在数据库表中,记录不是固有的顺序,并且您没有告诉我们应该使用哪个列进行排序

如果您想按col3订购,则可以使用聚合,如下所示:

select col1, col2, max(col3) -- or min(col3)
from mytable
group by col1, col2
-- having count(*) > 1       
-- uncomment the above line if you want to see only records for which a duplicate exists
如果您想使用其他列(比如id)进行排序,则可以使用相关子查询进行筛选

select col1, col2, col3
from mytable t
where id = (
    select max(id) from mytable t1 where t1.col1 = t.col1 and t1.col2 = t.col2
)

关于哪一列的最后一个重复条目?你能为你的问题添加样本数据吗?添加了样本数据。在图像中,我需要以黄色突出显示的行如何定义最后一个副本?您需要一列对结果进行排序,因为数据库表中没有固有的顺序。总而言之,rdbms表中的行表示无序集。没有“第一”。没有最后一个。让我们考虑ID列的第一个副本和最后一个副本,在我的表中有超过90000个行项。但是结果没有出现。@vinothvk:您是在运行第一个查询还是第二个查询?第二个查询从mytable t中选择col1、col2、col3,其中id=从mytable t1中选择maxid,其中t1.col1=t.col1和t1.col2=t.col2