2013-05-10 98 views
0

所以我有一个表ID(AI,主键),ticker,priceDate,price删除MySQL表中2个字段相同的重复项

我有一堆或共享相同的priceDateticker的记录。对于任何给定的priceDate,每个ticker应该只有一条记录。

因为priceDateticker不是唯一的字段,我将如何去除这些重复的记录?

+0

此问题的解决方案已发布。 http://stackoverflow.com/questions/4685173/delete-all-duplicate-rows-except-for-one-in-mysql/5016434#5016434 – 2013-05-10 12:49:28

回答

1
delete from your_table 
where id not in 
(
    select * from 
    (
    select min(id) 
    from your_table 
    group by pricedate, ticker 
) x 
) 
+0

非常感谢,认为它做到了。出于兴趣,最后'x'是什么? – harryg 2013-05-10 12:54:24

+0

如果你定义了一个子查询,你需要用一个别名来命名它。我用'x'作为别名。 – 2013-05-10 13:07:37

+0

顺便说一句,你需要这个子查询,因为MySQL不允许你从你正在选择的同一个表中删除。但是用另一个子查询可以欺骗MySQL。 – 2013-05-10 13:09:21