我有一个表,详细信息如下,person_item(id,person_id,item_name,value)。对于某些为person_id和ITEM_NAME,这应该是唯一的,如果我运行SQL脚本这意味着,SQL,如何使用GROUP BY删除重复数据
SELECT name,Count(*) FROM person_item GROUP BY person_id, item_name
所有的选择应该只有一个。但是,我发现重复数据,并且对于每个person_id和item_name对,有时显示多于一行。我想要做的是保持每个GROUP BY的第一行并删除重复。算法应该这样,
1. FROM person_item GROUP BY person_id, item_name
2. if Count(*)>1, remain the first one and delete the rest
但是,我不知道如何编写这样的SQL脚本而不创建新的表。谢谢。
我试过,但是,NOT IN处理40,000行数据非常慢。在脚本之后,Mysql甚至不会显示任何响应。有其他方法吗? – zhouyu
在这种情况下,表中的主键变为强制,因为表中没有索引,所以变得非常慢。 – user2919105