2011-02-18 77 views
101

我有一個已經存在的表,該字段應該是唯一的,但不是。我只知道這一點,因爲一個條目與另一個已經存在的條目具有相同的值,這導致了問題。MySQL - 使現有的字段唯一

如何讓此字段只接受唯一值?

回答

210
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關鍵字。

Reference

+53

+1`如果忽略指定,則只有第一行用行與重複上一個獨特的鍵,相互衝突行被刪除。[文件](http://dev.mysql.com/doc/refman/5.1/en/alter-table.html) – 2011-02-18 05:47:03

5

CREATE UNIQUE INDEX foo ON table_name (field_name)

(你必須在這之前刪除重複值)

11

如果你也想命名約束,使用此:

ALTER TABLE myTable 
    ADD CONSTRAINT constraintName 
    UNIQUE (columnName); 
26

只寫這個查詢在你的db phpmyadmin中。

ALTER TABLE TableName ADD UNIQUE (FieldName) 

例子。

ALTER TABLE user ADD UNIQUE (email) 

感謝

1
ALTER IGNORE TABLE mytbl ADD UNIQUE (columnName); 

是正確的答案

嵌件

INSERT IGNORE INTO mytable .... 
1

的最簡單和最快的方法是用phpmyadmin的結構表。

USE PHPMYADMIN ADMIN PANEL!

有它在俄語但在英文版本應該是相同的。只需點擊唯一按鈕。從那裏你也可以使你的列PRIMARY或DELETE。

0

此代碼是爲了解決我們的問題來設置唯一鍵的現有表

alter ignore table ioni_groups add unique (group_name); 
相關問題