2013-04-24 34 views

cevap

7

Hayır, caiz değildir.

aşağıdaki SQL: yapabilirsiniz Çoğaltmalarla tüm çıkardıktan sonra

SELECT * FROM `table` 
GROUP BY `column` 
HAVING COUNT(`column`) > 1 

:

#1062 - Duplicate entry 'data' for key 'column'

kullanarak çiftleri tespit edebilirsiniz:

ALTER TABLE `table` 
ADD UNIQUE (`column`) 

aşağıdaki hata oluşturmak Will UNIQUE kısıtlamasını ekleyin.

+2

Açıklamaları işaretlemek için @EdwardvanKuik'e teşekkürler. Not - Bu, ilgili değere sahip tüm kayıtları kaldıracaktır. Sadece bir tanesini silmek isteyebilirsiniz. –

0

mümkün değildir:

Mysql2::Error: Duplicate entry 'foo' for key 'index_clubs_on_url': CREATE UNIQUE INDEX `index_clubs_on_url` ON `clubs` (`url`) 
2

Aslında en azından MySQL 5.1+ sürümünde mümkündür. Sen kullanabilirsiniz:

ALTER IGNORE TABLE `table` ADD UNIQUE INDEX (`column`); 

tablonuz, bu ilk çalıştırmanız gerekir InnoDB'nin ise:

set session old_alter_table=1 

referans http://www.mikeperham.com/2012/03/02/deleting-duplicate-rows-in-mysql/

EDIT: MySQL 5.7.4 itibariyle için maddeyi YOKSAY ALTER TABLE kaldırıldı ve kullanımı bir hata üretir.

+1

MySQL 5.7.4'ten itibaren ALTER TABLE için IGNORE yan tümcesi kaldırıldı ve kullanımı bir hata oluşturuyor. –

İlgili konular