Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Aktualizacja czyszczenia dla zduplikowanych wpisów

W porządku, więc oto co polecam. Chcesz zmienić klauzulę where, określając tylko duplikaty. Poza tym naprawdę chcesz przeglądać tylko aktywne rekordy, ponieważ nie ma znaczenia, czy istnieją duplikaty nieaktywnych rekordów.

Aby sprawdzić, czy istnieje duplikat, możesz użyć exists . Aby użyć istnieje, najpierw napiszemy podzapytanie, aby wycofać zduplikowane rekordy, czyli wszystko, co ma to samo imię i nazwisko, inny identyfikator i jest również aktywne. Jeśli podzapytanie coś cofa, istnieje zwróci true i zaktualizujemy rekord. Jeśli nie ma duplikatów, podzapytanie nie pobierze żadnych rekordów, a istniejące zwróci false. Wtedy nie zaktualizujemy rekordu.

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. Ranking wyników w mysql (odpowiedniki mysql dla funkcji 'dense_rank()' lub 'row_number()' w Oracle)

  2. mysql/php czy to bezpieczny sposób na połączenie z mysql DB?

  3. Mysql sam zapyta jeden z indeksem drugi bez uzyskania czasu 10000xFetch?

  4. Ograniczenie CHECK w MySQL nie działa

  5. błąd importu z python-mysql-connector 1.16, django 1.6 i python 3.2.3