sql >> データベース >  >> RDS >> Mysql

重複エントリのクリーンアップ更新

    さて、これが私がお勧めするものです。 where句を変更して、重複のみを指定したいとします。また、非アクティブなレコードの重複があるかどうかは問題ではないため、実際にはアクティブなレコードのみを確​​認する必要があります。

    重複があるかどうかを確認するには、existsを使用できます 。存在を使用するために、最初にサブクエリを記述して、重複するレコードをプルバックします。これは、同じ名前と姓、異なるIDを持ち、アクティブなものです。サブクエリが何かをプルバックすると、existsはtrueを返し、レコードを更新します。重複がない場合、サブクエリはレコードを取得せず、existsはfalseを返します。その後、レコードは更新されません。

    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. MYSQL QUERY LEFT JOINは、1つのテーブルからすべてのデータを表示します

    2. EXPLAINANALYZEを理解する方法

    3. 日単位の2つのタイムスタンプ間のMySqlの違いは?

    4. Oracleのデータベースセキュリティ