sql >> Databáze >  >> RDS >> Mysql

Aktualizace vyčištění pro duplicitní položky

Dobře, takže tady je to, co bych doporučil. Chcete změnit klauzuli where tak, aby specifikovala pouze duplikáty. Také se opravdu chcete podívat pouze na aktivní záznamy, protože nezáleží na tom, zda existují duplikáty neaktivních záznamů.

Chcete-li zjistit, zda existuje duplikát, můžete použít exists . Abychom mohli použít exists, nejprve napíšeme poddotaz, abychom stáhli duplicitní záznamy, alias cokoli se stejným jménem a příjmením, jiným ID a je také aktivní. Pokud poddotaz něco stáhne zpět, exists vrátí true a záznam aktualizujeme. Pokud neexistují žádné duplikáty, poddotaz nezachytí žádné záznamy a hodnota exists vrátí hodnotu false. Poté záznam nebudeme aktualizovat.

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. Závažná chyba:Nelze otevřít a zamknout tabulky oprávnění:Tabulka 'mysql.host' neexistuje

  2. Hromadně vložit částečně citovaný soubor CSV na SQL Server

  3. MySQL INSERT else if existuje UPDATE

  4. ORA-29913:Chyba při provádění výzvy ODCIEXTTABLEOPEN