`

给有重复记录的表添加唯一索引

 
阅读更多

相当有用的一招,原文复制如下:

 

不希望数据表中有重复记录的时候我们可以给表添加一个联合唯一索引
 例如,user表中有user_id,user_name两个字段,如果不希望有两条一摸一样的的user_id和user_name,我们可以给user表添加两个字段的联合唯一索引:

 

 alter table user add unique index(user_id,user_name);

 


 这样当向表中添加相同记录的时候,会返回1062的添加失败信息。
 但是有一种情况是表中已经有n个重复的记录,这时候我们才想起来要添加唯一索引,再执行上面的操作时,数据库会告诉你已经有重复的记录了,建立索引失败,这时候,我们可以用下面的操作:

 

alter ignore table user add unique index(user_id,user_name);

  


 它会删除重复的记录(别怕,会保留一条),然后建立唯一索引,高效而且人性化。

 

 

尤其最后的那条sql,在建立索引的同时删除了重复数据,相当有用。

分享到:
评论

相关推荐

    goldengate同步无主键无唯一索引表的问题以及解决方案.docx

    1. 添加主键或唯一索引:在源表和目标表中添加主键或唯一索引,以便 GoldenGate 正确地识别和处理数据的变化。 2. 使用 supplemental logging:使用 supplemental logging 功能, GoldenGate 可以记录所有列的变化,...

    Mybatis Plus 自定义批量插入或批量更新(根据唯一索引)

    然而,当涉及到唯一索引时,简单的批量操作可能无法满足需求,因为可能会有重复的数据导致冲突。 在 Mybatis Plus 中自定义批量插入,我们可以通过继承 `AbstractService` 类并覆写 `batchInsert()` 方法来实现。在...

    数据库 创建索引 sql oracle

    * 唯一索引:要求创建索引的关键字段值在表中不能有重复值。 * 复合索引:对表创建的索引是基于多个字段对表中的记录排序的。 索引的创建 ------------ 创建索引可以使用 Enterprise Manager、Transact-SQL 语句和...

    轻松消除SQL SERVER重复记录

    在SQL Server中,处理重复...总之,通过创建临时表、添加唯一索引、复制数据以及更新原表,可以有效地在SQL Server中删除重复记录,而无需使用游标,提高了处理效率。这种方法尤其适用于处理大型表,且易于理解和实现。

    MySQL建立唯一索引实现插入重复自动更新

    这里,`table_name`是你需要添加唯一索引的表名,`column_list`是包含一个或多个列名的列表,这些列将组成唯一索引。例如,如果你想要在`user_id`列上创建唯一索引,你可以写成: ```sql ALTER TABLE your_table ...

    删除数据库中的重复记录

    4. 数据库索引:对经常用于搜索和比较的字段建立索引,提高查找重复记录的效率。 总结,处理数据库中的重复记录是一项细致的工作,需要先查找,再决定是否删除,并考虑如何防止未来再次出现。在Access这样的关系...

    Delphi禁止TlistView列表添加重复信息..rar

    9. **数据库操作**:如果数据是从数据库获取的,可以在数据库层面添加唯一约束或索引来保证数据的唯一性。这样在试图插入重复数据时,数据库会抛出错误,阻止操作。 10. **异常处理**:在添加项时,捕获可能出现的...

    mysql为字段添加和删除唯一性索引(unique) 的方法

    添加唯一索引的命令如下: ```sql ALTER TABLE `table_name` ADD UNIQUE ( `column` ); ``` 3. **添加 INDEX(普通索引)** 普通索引没有唯一性要求,可以有重复值。这是最基础的索引类型,主要用于加速查询。...

    索引的优点和缺点

    当向表中添加新记录时,DBMS还需要更新所有相关的索引,这会增加写入操作的时间。同样,删除和修改记录时也需要同步更新索引,从而进一步降低性能。 #### 3. 索引维护成本 除了占用存储空间和影响写入性能之外,...

    oracle约束和索引笔记

    - **唯一索引(Unique Index)**: 确保索引键的唯一性,与唯一约束相似,但不强制非空。 - **分区索引(Partitioned Index)**: 将大型表的索引分割成更小、更易管理的部分,提高大规模数据的查询性能。 - **复合...

    防止mysql重复插入记录的方法

    防止mysql重复插入记录的方法有很多种,常用的是ignore,Replace,ON DUPLICATE KEY UPDATE,当然我们也可以在php中加以判断了。...这样当有重复记录就会忽略,执行后返回数字0 还有个应用就是复制表,避

    MySQL中的唯一索引的简单学习教程

    如果已经创建了表,但后来决定为某列添加唯一索引,可以通过以下方式实现: ```sql ALTER TABLE student ADD CONSTRAINT uk_student_name UNIQUE (name); ``` 或者使用`CREATE INDEX`语句: ```sql CREATE UNIQUE ...

    数据库的索引

    - 创建唯一索引可以保证数据表中的每一行数据具有唯一性,这对于防止重复数据的出现非常有用。 - 索引能够显著提高查询速度,尤其是当数据量较大时,索引的作用更为明显。 - 索引还可以加快表与表之间的连接操作,...

    SQL删除重复行

    最后,为了避免重复数据的产生,最佳实践是在设计数据库时为关键字段添加唯一索引,这不仅可以防止插入重复数据,还可以提高查询性能。对于已经存在的重复数据,可以通过上述SQL语句进行清理。在执行这些操作前,...

    mysql索引原理深入解析

    普通索引允许重复值,而唯一索引要求键值唯一,主键索引是特殊的唯一索引,不允许有空值。全文索引适用于长文本字段,如消息内容,可以提升`LIKE`查询的效率,但MySQL内置的全文索引功能有限,可能需要使用第三方...

    SQL Server允许重复空字段不空字段值唯一

    用户希望`Caption`字段的非空值是唯一的,即不允许有重复的非空`Caption`值,但允许存在多个`Caption`为空的记录。 解决方案1是尝试在`Caption`字段上添加一个唯一非聚簇索引(UNIQUE NONCLUSTERED INDEX)。然而,...

    mysql 添加索引 mysql 如何创建索引

    唯一索引是保证字段值的唯一性的索引,一个表可以有多个唯一索引。创建唯一索引的SQL语句为: ```sql ALTER TABLE `table_name` ADD UNIQUE ( `column` ) ``` 其中,`table_name`是表名,`column`是唯一索引字段名。...

    数据库删除完全重复和部分关键字段重复的记录

    针对不同的重复情况,选择合适的方法进行处理,如添加唯一索引、利用`DISTINCT`关键字或结合`ROWID`等特性,都是提高数据质量的有效手段。在实际操作中,应确保对数据进行备份,避免误操作造成数据丢失。

    完整精品数据库课件 MySQL从入门到精通 第09章 索引(共11页).ppt

    - **分类**:索引大致分为普通索引(允许重复值)和唯一索引(不允许重复值),单列索引(基于单个列创建)和组合索引(基于多个列创建)。此外,还有全文索引,用于全文搜索;空间索引,用于处理地理空间数据。 ...

Global site tag (gtag.js) - Google Analytics