从特定日期在MySQL中查找重复条目

时间:2014-04-13 07:46:14

标签: mysql sql duplicate-data

我有一个包含超过1000万个条目的庞大数据库。

我想在该表中找到重复项,因此我使用以下语句:

SELECT *
FROM `customer_positions_all`
WHERE `position_id` IN (
    SELECT `position_id`
    FROM `customer_positions_all`
    GROUP BY `position_id`
    HAVING count(`position_id`) > 1
    )
ORDER BY `position_id`

我还有一个“日期”列,我想只查找高于特定日期的副本(例如:date>'2014-04-01')。

我不知道我在哪里把它放在查询中...我一直在收到错误。

1 个答案:

答案 0 :(得分:1)

WHERE之前添加GROUP BY子句,以便将其与GROUP BY一起使用。但是,您可以在外部查询中进行过滤,从已知具有重复项的ID列表中进行过滤,如下所示:

SELECT *
FROM `customer_positions_all`
WHERE `position_id` IN (
SELECT `position_id`
FROM `customer_positions_all`
--WHERE date > '2014-04-01' --Redundant!
GROUP BY `position_id`
HAVING count(`position_id`) > 1
)
AND date > '2014-01-01'
ORDER BY `position_id`