sql >> Databasteknik >  >> RDS >> Mysql

Rensningsuppdatering för dubbletter av poster

Okej, så här är vad jag skulle rekommendera. Du vill ändra din where-sats för att endast ange dubbletterna. Dessutom vill du egentligen bara titta på de aktiva posterna eftersom det inte spelar någon roll om det finns dubbletter av inaktiva poster.

För att se om det finns en dubblett kan du använda en exists . För att använda existensen kommer vi först att skriva en underfråga för att dra tillbaka dubbletter av poster, aka allt med samma för- och efternamn, ett annat id, och är också aktivt. Om underfrågan drar tillbaka något kommer exists att returnera sant och vi kommer att uppdatera posten. Om det inte finns några dubbletter kommer underfrågan inte att ta några poster och existensen kommer att returnera false. Då kommer vi inte att uppdatera posten.

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. Felaktig syntax nära ''

  2. Så här grupperar du en rapport efter flera fält i Access 2016

  3. Ändra Google Cloud SQL CURRENT_TIMESTAMP tidszon?

  4. Anpassade triggerbaserade uppgraderingar för PostgreSQL