所以我有一个表ID
(AI,主键),ticker
,priceDate
,price
。删除MySQL表中2个字段相同的重复项
我有一堆或共享相同的priceDate
和ticker
的记录。对于任何给定的priceDate
,每个ticker
应该只有一条记录。
因为priceDate
和ticker
不是唯一的字段,我将如何去除这些重复的记录?
所以我有一个表ID
(AI,主键),ticker
,priceDate
,price
。删除MySQL表中2个字段相同的重复项
我有一堆或共享相同的priceDate
和ticker
的记录。对于任何给定的priceDate
,每个ticker
应该只有一条记录。
因为priceDate
和ticker
不是唯一的字段,我将如何去除这些重复的记录?
delete from your_table
where id not in
(
select * from
(
select min(id)
from your_table
group by pricedate, ticker
) x
)
非常感谢,认为它做到了。出于兴趣,最后'x'是什么? – harryg 2013-05-10 12:54:24
如果你定义了一个子查询,你需要用一个别名来命名它。我用'x'作为别名。 – 2013-05-10 13:07:37
顺便说一句,你需要这个子查询,因为MySQL不允许你从你正在选择的同一个表中删除。但是用另一个子查询可以欺骗MySQL。 – 2013-05-10 13:09:21
此问题的解决方案已发布。 http://stackoverflow.com/questions/4685173/delete-all-duplicate-rows-except-for-one-in-mysql/5016434#5016434 – 2013-05-10 12:49:28