表名称 radacct radacctid 是 pk accountuniqueid 是订阅者在连接时生成的几乎唯一的字符串。
这是输出重复条目的 mysql 查询,我想在同一命令中删除结果以自动执行此过程。
select *
from radacct
group by acctuniqueid
HAVING
(radacct.acctuniqueid > 1)
最佳答案
我假设您的意思是 HAVING
子句中的 HAVING COUNT(acctuniqueid) > 1
。如果您确实想删除所有重复项(即不保留任何重复项):
DELETE FROM
radacct
WHERE
`acctuniqueid` IN (
SELECT `acctuniqueid` FROM (
SELECT `acctuniqueid`
FROM radacct
GROUP BY `acctuniqueid`
HAVING COUNT(`acctuniqueid`) > 1
) x
)
;
中间的SELECT
对于MySQL在直接子选择中忽略相同的表引用是必要的。
建议删除前先进行全表备份。
关于mysql - 如何在单个 mysql 命令中删除此选择查询的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43816152/