用mysql删除重复数据的一种简单方法
createtable `用户`(
` ID ` int(10)notnullauto_increment,
`名字` char(50)notnull,
主键(` ID `)
)
复制代码代码如下所示:
Deletefromuserswhereidin(selectmin(ID)fromusersgroupbynamehavingcount(名称)> 1);
结果报告是错的:1093youcan'tspecifytargettable…
原因是MySQL删除操作不能接受此表的查询操作。这意味着你删除用户表是不是有条件的用户表的信息,所以这种说法是错的。只要临时表创建一个查询condition.as如下
复制代码代码如下所示:
deletefromuserswhereidin(SELECT * FROM(selectmin(ID)fromusersgroupbynamehavingcount(名称)> 1));
还注意到,deletefromusers不能使用化名在这里
其他的方法。
复制代码代码如下所示:
Deleteusersasafromusersasa(selectmin(ID)的身份,namefromusersgroupbynamehavingcount(名称)> 1
)asbwherea。名称= b.nameanda ID <>数据;
设置临时表:
复制代码代码如下所示:
createtabletmp_usersselectmin(` ID `),`名字` fromusersgroupbyname;
Truncatetableusers;
insertintousersselect * fromtmp_users;
droptabletmp_users;