使用
后,我大约有75,000个条目/行SELECT WWW, COUNT(*) c FROM pmd_listings GROUP BY WWW HAVING c > 1;
我发现我大约有9000个重复项(仅基于一列,实际上可能会少一些)。我只能对聚合函数使用分组方式(不完全确定这意味着什么),但是如果行在这些列中匹配,我想删除重复项(以确保它们是重复项)
"friendly_url"
"www"
和"listing_zip"
在表"pmd_listings"
中。
我尝试运行此模拟:
但是出现以下错误:
#1054 - Unknown column 'c1.id' in 'where clause'
我该如何完成?非常感谢您的帮助!
谢谢!
答案 0 :(得分:1)
对于MySql,需要在DELETE和FROM之间引用别名c1
。
尝试这种方式:
DELETE FROM pmd_listings
WHERE id NOT IN (
SELECT t.id FROM (
SELECT MIN(id) id
FROM pmd_listings
GROUP BY friendly_url, www, listing_zip
) t
)
答案 1 :(得分:0)
您可以将left join
与delete
一起使用:
delete pl
from pmd_listings pl left join
(select pl2.friendly_url, pl2.www, pl2.listing_zip, min(id) as min_id
from pmd_listings pl2
group by pl2.friendly_url, pl2.www, pl2.listing_zip
) pl2
on pl2.id = pl.id
where pl2.id is null;
聚合子查询查找三列组合的所有最小ID。 left join
查找与这些ID匹配的内容,而where
意味着删除所有不匹配的行,即除第一行外的所有行。