• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > MySQL中处理各种重复的一些方法

MySQL中处理各种重复的一些方法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了mysql使用方法,mysql安装方法,mysql数据库使用方法,mysql 索引方法,mysql数据库备份方法等相关知识,希望本文的分享对您有所帮助

有时表或结果集包含重复的记录。有时它是允许的,但有时它需要停止重复的记录。有时它需要识别重复的记录从表中删除。本章将介绍如何防止发生在一个表中重复的记录如何删除已经存在的重复记录。
防止重复表中的发生:

可以使用PRIMARY KEY或UNIQUE索引的表上相应的字段来防止重复的记录。让我们举一个例子,下面的表中不包含这样的索引或主键,所以它会允许记录first_name和last_name重复

CREATE TABLE person_tbl
(
  first_name CHAR(20),
  last_name CHAR(20),
  sex CHAR(10)
);

</div>

可以使用PRIMARY KEY或UNIQUE索引的表上相应的字段防止重复的记录。让我们举一个例子,下面的表中不包含这样的索引或主键,所以它会允许重复first_name和last_name记录

CREATE TABLE person_tbl
(
  first_name CHAR(20) NOT NULL,
  last_name CHAR(20) NOT NULL,
  sex CHAR(10)
  PRIMARY KEY (last_name, first_name)
);

</div>

表中的唯一索引的存在通常会导致错误的发生,如果表中插入一条记录,重复定义索引的列或列中的现有记录。
使用INSERT IGNORE而不是INSERT。如果记录不重复现有的记录,MySQL将插入它像往常一样。如果记录是重复IGNORE关键字告诉MySQL静静地抛弃它,而不会产生错误。

下面的示例中没有错误,同时也不会插入重复的记录。

mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
  -> VALUES( 'Jay', 'Thomas');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
  -> VALUES( 'Jay', 'Thomas');
Query OK, 0 rows affected (0.00 sec)

</div>

使用替换而不是INSERT。如果记录是新的它INSERT插入。如果它是一个重复的,新的记录将取代旧的:

mysql> REPLACE INTO person_tbl (last_name, first_name)
  -> VALUES( 'Ajay', 'Kumar');
Query OK, 1 row affected (0.00 sec)
mysql> REPLACE INTO person_tbl (last_name, first_name)
  -> VALUES( 'Ajay', 'Kumar');
Query OK, 2 rows affected (0.00 sec)

</div>

使用REPLACE而不是INSERT。如果记录是新的它INSERT插入。如果它是一个重复的,新的记录将取代旧的:

强制唯一性的另一种方法是添加一个UNIQUE索引,而不是一个PRIMARY KEY表。

CREATE TABLE person_tbl
(
  first_name CHAR(20) NOT NULL,
  last_name CHAR(20) NOT NULL,
  sex CHAR(10)
  UNIQUE (last_name, first_name)
);

</div>

计算和确定重复:

以下是查询数first_name和last_name表中的重复记录。

mysql> SELECT COUNT(*) as repetitions, last_name, first_name
  -> FROM person_tbl
  -> GROUP BY last_name, first_name
  -> HAVING repetitions > 1;

</div>

这个查询将返回一个列表的所有person_tbl表中重复的记录。在一般情况下,识别重复的值,请执行以下操作:

  •     确定哪一列包含的值可能会重复。
  •     在列选择列表中随着COUNT(*)列出的那些列。
  •     以及在GROUP BY子句中列出的列。
  •     新增的HAVING子句消除了独特的值要求的组数大于1。

消除重复查询结果:

可以使用DISTINCT与SELECT语句一起找出表中唯一的纪录。

mysql> SELECT DISTINCT last_name, first_name
  -> FROM person_tbl
  -> ORDER BY last_name;

</div>

DISTINCT是添加一个GROUP BY子句中命名的列,选择的另一种方法。这具有除去重复和只选择的独特的组合中的指定的列的值的效果:

mysql> SELECT last_name, first_name
  -> FROM person_tbl
  -> GROUP BY (last_name, first_name);

</div>

删除重复使用表更换:

如果在一个表中有重复的记录,想从该表中删除所有的重复记录,看看下面程序的例子。

mysql> CREATE TABLE tmp SELECT last_name, first_name, sex
  ->         FROM person_tbl;
  ->         GROUP BY (last_name, first_name);
mysql> DROP TABLE person_tbl;
mysql> ALTER TABLE tmp RENAME TO person_tbl;

</div>

从一个表中删除重复记录的一个简单的方法是添加KEY,表索引或PRIMAY。如果该表已经是可用的,那么使用此方法删除重复的记录。

mysql> ALTER IGNORE TABLE person_tbl
  -> ADD PRIMARY KEY (last_name, first_name);

</div>


</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 基于MYSQL中优化的一些方法
  • mysql 将列值转变为列的方法
  • MySQL的重装问题解决方法
  • mysql解决远程不能访问的二种方法
  • 如何解决mysql重装失败方法介绍
  • mysql 模糊搜索的方法介绍
  • mysql 判断记录是否存在方法比较
  • 彻底卸载MySQL的方法分享
  • mysql中判断记录是否存在方法比较
  • 免安转MySQL服务的启动与停止方法

相关文章

  • 2018-12-05shp2sqlserver 用法简析
  • 2017-05-11mysql数据库插入速度和读取速度的调整记录
  • 2018-12-05MySQL基础教程mysql5.7.18安装和连接
  • 2018-12-05oracle wm_concat 列转行 逗号分隔
  • 2018-12-05数据库导出与导入的实例总结
  • 2018-12-05分享自己三天的性能调优遇到的一些问题
  • 2017-05-11MySQL replace into 语句浅析(二)
  • 2018-12-05Linux CentOS MySQL数据库安装配置实例分享
  • 2018-12-05关于mysql数据库误删除后的数据恢复操作的示例代码分享
  • 2017-05-11浅析MySQL之字符串函数

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • SQLServer 连接失败错误故障的分析与排除
    • MySql索引设计
    • 使用SqlBulkCopy时应注意Sqlserver表中使用缺省值的列
    • Mysql 行级锁的使用及死锁的预防方案
    • select into 和 insert into select 两种表复制语句
    • 用VirtualBox构建MySQL测试环境的笔记
    • 关于MySql超长自动截断实例详解
    • MySQL 中查看表结构的命令有哪些
    • 有关Text类型的文章推荐10篇
    • sql编程的几个常识

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有