如何在单个mysql命令中删除此选择查询的结果?

时间:2017-05-06 02:42:14

标签: mysql select duplicates freeradius

表名radacct radacctid是pk accountuniqueid是订阅者在连接时生成的几乎唯一的字符串。

这是输出重复条目的mysql查询,我希望在同一命令中删除结果,以便自动执行此过程。

select *
from radacct
group by acctuniqueid
HAVING
(radacct.acctuniqueid > 1)

1 个答案:

答案 0 :(得分:0)

我认为你的HAVING COUNT(acctuniqueid) > 1条款中的HAVING意味着你。如果你真的想要删除所有重复项(即保持无欺骗):

DELETE FROM
    radacct
WHERE
    `acctuniqueid` IN (
        SELECT `acctuniqueid` FROM (
            SELECT `acctuniqueid`
            FROM radacct
            GROUP BY `acctuniqueid`
            HAVING COUNT(`acctuniqueid`) > 1
        ) x
    )
;

中间SELECT是MySQL在直接子选择中忽略相同表引用所必需的。

建议在删除前执行全表备份。