[英]Mysql query to delete duplicates based on part of timestamp
我有一個網上商店,由於Paypal發送一些付款通知兩次甚至3-4-5次,兩次通知之間有隨機間隔,從幾秒到幾分鍾不等,因此得到了一些重復的訂單。
我的訂單表中的示例:
ID productname buyer timestamp
1 apples john 2014-07-01 19:22:20
2 bananas john 2014-07-01 19:22:20
3 oranges mary 2014-07-01 19:22:52
4 apples john 2014-07-01 19:22:53
5 bananas john 2014-07-01 19:22:53
6 apples chris 2014-07-01 19:22:54
我要刪除所有重復的行,重復是指產品名稱,買方和購買日期應該相等。 (僅日期,而不是時間戳記的時間部分)
因此,在上表中,應將其刪除:
4 apples john 2014-07-01 19:22:53
5 bananas john 2014-07-01 19:22:53
因為他在同一天早些時候買了同樣的東西。
您將如何去做?
你可以用EXISTS
來做
DELETE FROM table AS t
WHERE EXISTS(
SELECT *
FROM table
WHERE id != t.id
AND productname = t.productname
AND buyer = t.buyer
AND DATE(timestamp) = DATE(t.timestamp))
這是另一個類似的問題 。 真正的原因是使id
成為唯一的鍵字段,以便您一開始就不能插入重復項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.