所以如果文件
表如果employeeid 1有5个文件名相同,则删除4个文件(删除重复的文件名或具有相同文件名的文件名)并将其全部删除。
我在用mariadb
获取所有重复记录的查询
代码
SELECT id, employeeId, filename, COUNT(filename) FROM DOCUMENTS GROUP BY filename
HAVING COUNT(filename) > 1;
所以如果文件
表如果employeeid 1有5个文件名相同,则删除4个文件(删除重复的文件名或具有相同文件名的文件名)并将其全部删除。
我在用mariadb
SELECT id, employeeId, filename, COUNT(filename) FROM DOCUMENTS GROUP BY filename
HAVING COUNT(filename) > 1;
2条答案
按热度按时间0lvr5msh1#
我不确定你是只选择不同的项目还是找出那些重复的项目。如果您只想选择不同的/唯一的值:
我建议您将所选的唯一记录移动到临时表中,然后删除原始表记录,然后将临时表中的唯一记录插入到原始表中。
kpbpu0082#
例如,如果employeeid1有5个文件具有相同的文件名,那么删除4个文件,只保留1个文件
一种方法使用
delete
带有自联接的语句:这将删除上的重复项
(employeeid, filename)
同时用最小的id
.通过将一个条件移动到
where
条款,如过滤器id
;从文档d1中删除d1内部连接d2.filename=d1.filename和d2.employeeid=d1.employeeid上的文档d2,其中d2.id<d1.id