《MYSQL教程MySQL中处理各种重复的一些方法》要点:
本文介绍了MYSQL教程MySQL中处理各种重复的一些方法,希望对您有用。如果有疑问,可以联系我们。
MYSQL数据库有时表或结果集包含重复的记录.有时它是允许的,但有时它需要停止重复的记录.有时它需要识别重复的记录从表中删除.本章将介绍如何防止发生在一个表中重复的记录如何删除已经存在的重复记录.
防止重复表中的发生:
MYSQL数据库可以使用PRIMARY KEY或UNIQUE索引的表上相应的字段来防止重复的记录.让我们举一个例子,下面的表中不包含这样的索引或主键,所以它会允许记录first_name和last_name重复
MYSQL数据库
CREATE TABLE person_tbl
(
first_name CHAR(20),
last_name CHAR(20),
sex CHAR(10)
);
MYSQL数据库可以使用PRIMARY KEY或UNIQUE索引的表上相应的字段防止重复的记录.让我们举一个例子,下面的表中不包含这样的索引或主键,所以它会允许重复first_name和last_name记录
MYSQL数据库
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)
);
MYSQL数据库表中的唯一索引的存在通常会导致错误的发生,如果表中插入一条记录,重复定义索引的列或列中的现有记录.
使用INSERT IGNORE而不是INSERT.如果记录不重复现有的记录,MySQL将插入它像往常一样.如果记录是重复IGNORE关键字告诉MySQL静静地抛弃它,而不会产生错误.
MYSQL数据库下面的示例中没有错误,同时也不会插入重复的记录.
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)
MYSQL数据库使用替换而不是INSERT.如果记录是新的它INSERT插入.如果它是一个重复的,新的记录将取代旧的:
MYSQL数据库
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)
MYSQL数据库使用REPLACE而不是INSERT.如果记录是新的它INSERT插入.如果它是一个重复的,新的记录将取代旧的:
MYSQL数据库强制唯一性的另一种方法是添加一个UNIQUE索引,而不是一个PRIMARY KEY表.
MYSQL数据库
CREATE TABLE person_tbl
(
first_name CHAR(20) NOT NULL,
last_name CHAR(20) NOT NULL,
sex CHAR(10)
UNIQUE (last_name, first_name)
);
MYSQL数据库计算和确定重复:
MYSQL数据库以下是查询数first_name和last_name表中的重复记录.
MYSQL数据库
mysql> SELECT COUNT(*) as repetitions, last_name, first_name
-> FROM person_tbl
-> GROUP BY last_name, first_name
-> HAVING repetitions > 1;
MYSQL数据库这个查询将返回一个列表的所有person_tbl表中重复的记录.在一般情况下,识别重复的值,请执行以下操作:
MYSQL数据库消除重复查询结果:
MYSQL数据库可以使用DISTINCT与SELECT语句一起找出表中唯一的纪录.
MYSQL数据库
mysql> SELECT DISTINCT last_name, first_name
-> FROM person_tbl
-> ORDER BY last_name;
MYSQL数据库DISTINCT是添加一个GROUP BY子句中命名的列,选择的另一种方法.这具有除去重复和只选择的独特的组合中的指定的列的值的效果:
MYSQL数据库
mysql> SELECT last_name, first_name
-> FROM person_tbl
-> GROUP BY (last_name, first_name);
MYSQL数据库删除重复使用表更换:
MYSQL数据库如果在一个表中有重复的记录,想从该表中删除所有的重复记录,看看下面程序的例子.
MYSQL数据库
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;
MYSQL数据库从一个表中删除重复记录的一个简单的方法是添加KEY,表索引或PRIMAY.如果该表已经是可用的,那么使用此方法删除重复的记录.
MYSQL数据库
mysql> ALTER IGNORE TABLE person_tbl
-> ADD PRIMARY KEY (last_name, first_name);
转载请注明本页网址:
http://www.vephp.com/jiaocheng/3417.html