使用PHP脚本在MySQL中删除重复的行

问题描述

我需要一个PHP函数,该函数MysqL数据库表中删除重复的行。例如,我有一个这样的表:

table rows

我尝试了以下操作但未成功:

$find = MysqL_query("SELECT * FROM users");
while ($row = MysqL_fetch_assoc($find))
{
    $find_1 = MysqL_query("SELECT * FROM users ");
    if (MysqL_num_rows($find_1) > 0) {
        MysqL_query("DELETE FROM users WHERE ID =$row[num]");
    }

我需要删除这些重复的行,仅使用PHP(而不是我的sql数据库)仅保留其中的一行。有办法吗?

解决方法

您可以通过单个查询来执行此操作,而无需进行php循环(显然,该操作不会在这里执行您想要的操作):

delete t
from mytable t
inner join (select user,min(num) num from mytable group by user) t1
    on t.user = t1.user and t.num > t1.num

这将删除具有相同user的行,同时保留具有最小num的行。