如何在mysql中更新重复记录中特定记录

wkftcu5l  于 2023-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(128)

我在MySQL数据库中有一个表。其具有如下所示的3个记录。该表:
| 列|姓名|地址|电话|评论|
| - -----|- -----|- -----|- -----|- -----|
| 第1条记录|拉杰|钦奈|232329|零|
| 第二条记录|拉杰|钦奈|232329|零|
| 第3条记录|拉杰|钦奈|232329|零|
我只想更新两条记录的重复记录评论栏。输出应该是这样的....table
| 列|姓名|地址|电话|评论|
| - -----|- -----|- -----|- -----|- -----|
| 第1条记录|拉杰|钦奈|232329|重复记录|
| 第二条记录|拉杰|钦奈|232329|重复记录|
| 第3条记录|拉杰|钦奈|232329|零|
请告诉我如何在MySQL中做到这一点。

6tqwzwtp

6tqwzwtp1#

UPDATE your_table
SET comments = 'duplicate records'
WHERE (name, address, phone) IN (
SELECT name, address, phone
FROM your_table
GROUP BY name, address, phone
HAVING COUNT(*) > 1
);
1cosmwyk

1cosmwyk2#

这可以通过以下方式完成:
首先,我们需要每个组的最新记录:

select name, address, phone, max(id) as id
from mytable
group by name, address, phone
having count(*) > 1

然后我们使用left join来标识除该组的最新id之外的所有记录:

update mytable t
left join (
  select name, address, phone, max(id) as id
  from mytable
  group by name, address, phone
  having count(*) > 1
) as s on s.name = t.name and s.address = t.address and s.id = t.id
set t.comments = 'duplicate records'
where s.id is null

Demo here

相关问题