我有一个困难的删除任务,需要你的帮助。该数据库涉及在不同城市销售的交易(超过 400.000 行)。我的任务是删除在多个城市同时销售的同一笔交易。但是,同一笔交易可能会在不同时间在一个城市出现多次。相同的交易具有相同的标题(至少前 12 个特征)。
这是简化的数据示例
id; city_id; starting_date; title;
1; A; 30.01.2013; chain hotel A coupon
2; B; 30.01.2013; chain hotel A coupon
3; C; 30.01.2013; chain hotel A coupon
4; A; 01.03.2013; chain hotel A coupon
5; A; 06.05.2013; restaurant A coupon
6; A; 30.05.2013; restaurant A coupon
我想删除在多个城市同时销售的所有交易,但保留在不同时间在一个城市销售的交易。以下是我的代码:
DELETE FROM `table`
WHERE `id` in
(SELECT t2.`id` from
(
SELECT `id`
FROM `table`
GROUP BY LEFT(title, 35)
HAVING COUNT(*)>1
AND COUNT(DISTINCT `city_id`)>1)
as t2)
这段代码的问题是,在运行这段代码后,只有一行重复的行被移动了。有更好的解决方案吗?