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

テーブルからレコードが重複しないようにする方法挿入無視はここでは機能しません

    UNIQUEを追加してテーブルを変更します 制約

    ALTER TABLE employee ADD CONSTRAINT emp_unique UNIQUE (ename,dno,mgr,sal)
    

    ただし、テーブルemployeeの場合は、これを行うことができます。 空です。

    または、レコードが存在する場合は、IGNOREを追加してみてください

    ALTER IGNORE TABLE employee ADD CONSTRAINT emp_unique UNIQUE (ename,dno,mgr,sal)
    

    アップデート1

    何かがうまくいかなかったと思います。列enameに一意性制約を追加するだけで済みます eno以降 AUTO_INCREMENTにより、常に一意になります 。

    一意の制約を追加するには、テーブルでいくつかのクリーンアップを実行する必要があります。

    以下のクエリは、いくつかの重複レコードを削除し、列enameに一意の制約を追加してテーブルを変更します 。

    DELETE a
    FROM Employee a
         LEFT JOIN
         (
            SELECT ename, MIN(eno) minEno
            FROM Employee
            GROUP BY ename
         ) b ON a.eno = b.minEno
    WHERE b.minEno IS NULL;
    
    ALTER TABLE employee ADD CONSTRAINT emp_unique UNIQUE (ename);
    

    これが完全なデモンストレーションです



    1. 今年の最初と最後の日付を取得するにはどうすればよいですか?

    2. SQLテーブルで重複する値を見つける方法

    3. XmlHTTPRequest:XML解析エラー:要素が見つかりません

    4. mysqlbinlogを使用してMySQLバイナリログファイル(BinLog)を読み取る方法