我正在 MySQL 中工作,试图将一堆条目插入表中。我需要删除许多半重复的内容。我想删除除一个之外的所有半重复项。当我运行下面的代码时,它似乎通过仅保留具有多个半重复项的条目来删除我不想删除的所有内容。如何删除除一个半重复项之外的所有项,同时保留其他所有项的条目?
delete from t where (ColA, ColB, ColC) in
(select * from (select ColA, ColB, ColC from t
group by ColA, ColB, ColC having count(*) > 1) as t);
最佳答案
好吧,我认为如果不使用 where
就无法解决这个问题
但是您无法使用同一个表对 DELETE
进行 SELECT WHERE
操作
来 self 的数据库的示例
delete from tb_test where idtb_test not in (
select idtb_test from tb_test T1
WHERE T1.title in (select title from tb_test T2 group by T2.title having count(*) =1)
)
此查询搜索列标题上的非重复行,并删除除所选行之外的所有行
Mysql 错误:
Error Code: 1093. You can't specify target table 'tb_test' for update in FROM clause
关于mysql - 使用 MySQL 从数据库中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44075177/