我已经查看了另一个具有类似主题的问题,但它并没有解决我目前遇到的问题。
我有两张桌子:
users (id, name)
projects (id, user_id, image, inserted)
由于“项目”表中的 Flash 应用程序出现错误,因此存在许多重复项(一个项目被添加了多次)。连续副本之间存在几秒钟的时间差(小于 10 秒),这是确定重复项的唯一方法(用户可以添加无限数量的项目,但创建一个项目至少需要一分钟)。
如何选择和删除副本(并保留原始副本)?
编辑:
Robin Castlin 在下面发布的解决方案几乎就在那里,但是这个查询:
SELECT p2.id
FROM project AS p
INNER JOIN project AS p2
ON p.id != p2.id AND p.user_id = p2.user_id AND
ABS(TIME_TO_SEC(TIMEDIFF(p.inserted, p2.inserted))) <= 10
GROUP BY p2.id
选择所有副本(如果用户添加项目 5 次,它会给我 5 个 ID)。所以让我们反过来问题:如何从该组中选择除第一个/最后一个之外的所有内容?还是只有第一个/最后一个?