Mysql
 sql >> база данни >  >> RDS >> Mysql

Актуализация на почистване за дублиращи се записи

Добре, ето какво бих препоръчал. Искате да промените вашата клауза where, за да посочите само дубликатите. Освен това наистина искате да разглеждате само активните записи, защото няма значение дали има дубликати на неактивни записи.

За да видите дали има дубликат, можете да използвате exists . За да използваме съществуването, първо ще напишем подзаявка за изтегляне на дублиращи се записи, т.е. всичко със същото име и фамилия, различен идентификатор и също е активно. Ако подзаявката изтегли нещо обратно, exists ще върне true и ние ще актуализираме записа. Ако няма дубликати, подзаявката няма да вземе никакви записи и съществува ще върне невярно. Тогава няма да актуализираме записа.

update u
set active = 0
From UserInfo u
where (SELECT count(*)
FROM UserRecords recs
where recs.UserId= u.UserId) = 0
and     u.active = 1
and     exists (Select 1
                From UserInfo u2
                Where u2.lastname = u.lastname
                and     u2.firstname = u.firstname
                and     u2.userid <> u.userid
                and     u2.active = 1)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySql Connector 6.8.2 RC, Entity Framework 6 и Code First

  2. Вземете предстоящи рождени дни Mysql и PHP

  3. Как да преброя колоните на таблица

  4. Как да добавя <br/> след всеки резултат, но не и последен резултат?

  5. ГРЕШКА 2003 (HY000):Не мога да се свържа с MySQL сървър на локален хост (10061)