Запрос 1: проверьте, существуют ли дублирующиеся записи:
SELECT
id , username, COUNT(*)
FROM
tbluser
GROUP BY
username
HAVING
COUNT(*) > 1;
Результат:

Запрос 2: Мониторинг дублирующихся записейпротив одного набора данных.
select * from tbluser where username = 'abcuser1';
Результат:

Запрос 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
Выше запроса дают мне идентификаторы дубликатов записейчей статус должен быть обновлен. И затем я вставляю вышеупомянутые идентификаторы результата в:
update tbluser set status = 0 where id in (1,2);
Запрос 3 не дает желаемого результата: он просто пропускает первую запись и дает все другие дубликаты записей всех наборов данных.
Как пропустить первую дублирующую запись из каждого набора данных?