web-dev-qa-db-ja.com

MySQL-既存のフィールドを一意にする

一意である必要があるがそうではないフィールドを持つ既存のテーブルがあります。既に存在する別のエントリと同じ値を持つエントリがテーブルに作成され、これが問題を引き起こしたため、私はこれを知っています。

このフィールドで一意の値のみを受け入れるようにするにはどうすればよいですか?

134
Lothar
ALTER IGNORE TABLE mytbl ADD UNIQUE (columnName);

MySQL 5.7.4以降の場合:

ALTER TABLE mytbl ADD UNIQUE (columnName);

MySQL 5.7.4以降、ALTER TABLEのIGNORE句は削除され、その使用はエラーを生成します。

そのため、IGNOREキーワードがサポートされなくなったため、最初に重複するエントリを削除してください。

参照

258
WuHoUnited

Db phpmyadminにこのクエリを書くだけです。

ALTER TABLE TableName ADD UNIQUE (FieldName)

例:ALTER TABLE user ADD UNIQUE (email)

制約に名前を付けたい場合は、これを使用します:

ALTER TABLE myTable
  ADD CONSTRAINT constraintName 
    UNIQUE (columnName);
14
ypercubeᵀᴹ

CREATE UNIQUE INDEX foo ON table_name (field_name)

(その前に重複する値を削除する必要があります。)

6
Zulan

最も簡単で最速の方法は、phpmyadmin構造テーブルを使用することです。

USE PHPMYADMIN ADMIN PANEL!

そこはロシア語ですが、英語版でも同じです。 [ユニーク]ボタンをクリックするだけです。また、そこから列をPRIMARYまたはDELETEにすることができます。

3
MKA
ALTER IGNORE TABLE mytbl ADD UNIQUE (columnName);

正しい答えです

挿入部

INSERT IGNORE INTO mytable ....
2
user3772326

このコードは、既存のテーブルに一意のキーを設定する問題を解決するためのものです

alter ignore table ioni_groups add unique (group_name);
1
KARTHIKEYAN.A