重複するレコードが挿入されないように、テーブルの場所に一意のインデックスを追加します
ALTER IGNORE TABLE location ADD UNIQUE KEY ix1(country, city);
これにより、重複するレコードがテーブルから自動的に削除されます。今後の挿入クエリでは、INSERT IGNORE
を使用する必要があります。 重複エラーを回避するための句。
しかし、@AD7six
によって提案されたように コメントでは、MySQLバージョン5.1.41,5.5.1-m2, 6.0
では機能しない可能性があります :バグこちら
を参照してください
または、DELETE
を使用して重複を削除する別の安全な方法 クエリ:
DELETE a
FROM location a
LEFT JOIN (
SELECT locid
FROM location
GROUP BY country, city
)b
ON a.locid = b.locid
WHERE b.locid IS NULL;
auto_increment
の値を再設定します 列locid
、primary key
をドロップするだけです locid
で そしてそれを再作成します:
ALTER TABLE location DROP column locid;
ALTER TABLE location
ADD COLUMN locid INT unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
またはlocid
の値を再設定する別の方法 UPDATE
を使用する クエリ:
SET var_locid = 0;
UPDATE location
SET locid = (@var_locid := @var_locid + 1)
ORDER BY locid ASC;