2013-05-10 95 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