我的 mysql 数据库中有重复项,我可以通过以下查询找到这些重复项:
select checksum, count(*) c from MY_DATA group by checksum having c > 1;
我得到了大约 200 个重复项的列表。我想要做的是更新同一个表中的一列以将它们标记为重复项。
我试过这个:
update MY_DATA SET DONT_PARSE=1
where (select count(*) c from MY_DATA group by checksum having c > 1);
我收到错误:您无法在 FROM 子句中指定要更新的目标表“MY_DATA”
有人对此有解决方案吗?
最佳答案
使用加入
:
update my_data d join
(select checksum, count(*) as cnt
from MY_DATA
group by checksum
having cnt > 1
) c
on d.checksum = c.checksum
set DONT_PARSE = 1 ;
不幸的是,MySQL 不允许您在update
(或delete
)的子查询中引用正在更新的表。然而,join
通常可以用来解决这个问题。
关于mysql - 在 mysql 中使用 subselect 更新列时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51911723/