我有一个网店,由于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
因为他在同一天早些时候买了同样的东西。
你会怎么做呢?
答案 0 :(得分:1)
您可以使用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))
答案 1 :(得分:0)
Here is another similar question。它真正归结为使id
成为一个唯一的关键字段,以便您无法在第一时间插入重复字段。