gpt4 book ai didi

mysql - 跳过第一个重复记录并更新其他记录

转载 作者:行者123 更新时间:2023-11-30 21:42:52 24 4
gpt4 key购买 nike

查询一:检查是否存在重复记录:

SELECT
id , username, COUNT(*)
FROM
tbluser
GROUP BY
username
HAVING
COUNT(*) > 1;

结果:

duplicate records

查询 2:针对一个数据集监控重复记录。

select * from tbluser where username = 'abcuser1';

结果:

duplicate record

查询 3:(基于查询 2 中的数据,跳过第一个记录,即 293 并更新所有其他重复出现的状态。

我目前跳过第一个重复记录并更新其他记录的方法:

    SELECT CONCAT(id , ',') 
FROM tbluser u1
WHERE EXISTS
(
SELECT 1
FROM tbluser u2
WHERE u1.username = u2.username and u1.status = u2.status = 1 and u1.appId = u2.appId
LIMIT 1, 1
)
limit 1, 18446744073709551615

以上查询为我提供了需要更新其状态的重复记录的 ID。然后我将上面的结果 id 粘贴到:

update tbluser set status = 0 where id in (1,2);

查询 3 没有给出预期的结果。它只是跳过第一条记录并给出所有数据集的所有其他重复记录。

How can I skip the first duplicate record from each dataset?

最佳答案

这是一种方式:

UPDATE tbluser t
JOIN (
SELECT username, MIN(id) AS min_id
FROM tbluser
GROUP BY username
) AS g ON t.username = g.username AND t.id <> min_id
SET status = 0;

上面的查询更新了 username 切片中 id 值大于最小 id 的所有记录。

Demo here

关于mysql - 跳过第一个重复记录并更新其他记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50797739/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com