MySQL消弭反复行要领步骤【MySQL教程】,MySQL,步骤,方法
作者:搜教程发布时间:2019-12-01分类:MySQL教程浏览:58评论:0
导读:本文重要引见了MySQL消弭反复行的一些要领,须要的朋侪能够参考下,希望能协助到人人。sql语句/*MySQL消弭反复行的一些要领---ChuMi...
本文重要引见了MySQL 消弭反复行的一些要领,须要的朋侪能够参考下,希望能协助到人人。
sql语句
/* MySQL 消弭反复行的一些要领 ---Chu Minfei ---2010-08-12 22:49:44.660 --援用转载请说明出处:http://blog.csdn.NET/feixianxxx */ ----------------悉数字段反复------------------------ --1运用表替换来删除反复项 create table test_1(id int,value int); insert test_1 select 1,2 union all select 1,2 union all select 2,3; --竖立一个和源表构造一样的空的暂时表 create table tmp like test_1; --向暂时表插进去不反复的纪录 insert tmp select distinct * from test_1; --删除原表 drop table test_1; --变动暂时表名为目的表 rename table tmp to test_1; --显现 mysql> select * from test_1; +------+-------+ | id | value | +------+-------+ | 1 | 2 | | 2 | 3 | +------+-------+ --2.增加auto_increment属性列(这个要领只能用于MyISAM或许BDB引擎的表) create table test_1(id int,value int) engine=MyISAM; insert test_1 select 1,2 union all select 1,2 union all select 2,3; alter table test_1 add id2 int not null auto_increment, add primary key(id,value,id2); select * from test_1; +----+-------+-----+ | id | value | id2 | +----+-------+-----+ | 1 | 2 | 1 | | 1 | 2 | 2 | | 2 | 3 | 1 | +----+-------+-----+ delete from test_1 where id2<>1; alter table test_1 drop id2; select * from test_1; +----+-------+ | id | value | +----+-------+ | 1 | 2 | | 2 | 3 | +----+-------+ -------------------部份字段反复--------------------- --1.加索引的体式格局 create table test_2(id int,value int); insert test_2 select 1,2 union all select 1,3 union all select 2,3; Alter IGNORE table test_2 add primary key(id); select * from test_2; +----+-------+ | id | value | +----+-------+ | 1 | 2 | | 2 | 3 | +----+-------+ 我们能够看到 1 3 这条纪录消逝了 我们这里也能够运用Unique束缚 由于有能够列中有NULL值,然则这里NULL就能够多个了.. --2.团结表删除 create table test_2(id int,value int); insert test_2 select 1,2 union all select 1,3 union all select 2,3; delete A from test_2 a join (select MAX(value) as v ,ID from test_2 group by id) b on a.id=b.id and a.value<>b.v; select * from test_2; +------+-------+ | id | value | +------+-------+ | 1 | 3 | | 2 | 3 | +------+-------+ --3.运用Increment_auto也能够就是上面悉数字段去重的第二个要领 --4.轻易毛病的要领 --有些朋侪能够会想到子查询的要领,我们来实验一下 create table test_2(id int,value int); insert test_2 select 1,2 union all select 1,3 union all select 2,3; delete a from test_2 a where exists(select * from test_2 where a.id=id and a.value<value); /*ERROR 1093 (HY000): You can't specify target table 'a' for update in FROM clause*/ 现在,您不能从一个表中删除,同时又在子查询中从同一个表中挑选。 ------------------删除特定反复行-------------- --重要经由过程order by +limit 或许直接limit create table test_3(id int,value int); insert test_3 select 1,2 union all select 1,3 union all select 1,4 union all select 2,3; --这是要保存ID=1 value最小的谁人纪录,删除其他id为的纪录 delete from test_3 where id=1 order by value desc limit 2; select * from test_3; +------+-------+ | id | value | +------+-------+ | 1 | 2 | | 2 | 3 | +------+-------+ 假如你只想删除恣意的纪录 保存一条 就能够去掉order by
相干引荐:
php处置惩罚文本文档反复行
关于消弭反复行的细致引见
MySQL怎样消弭反复行的要领剖析
以上就是MySQL消弭反复行要领步骤的细致内容,更多请关注ki4网别的相干文章!
相关推荐
- MySQL如何使用授权命令grant_MySQL教程,MySQL,grant
- 开发与运行java程序的三个主要步骤是什么_JAVA教程,java,程序,步骤
- MySQL 连接查询超级详解_MySQL教程,MySQL,连接查询
- PHP如何结合MySQL进行千万级数据处理_php教程,PHP,MySQL,数据处理
- MySQL中explain用法和结果分析(详解)_MySQL教程,MySQL,explain
- 解决MySQL会出现中文乱码问题的方法_MySQL教程,MySQL,中文乱码
- 了解MySQ(Oracle)模糊查询 使用instr()替代like提升效率_MySQL教程,MySQL,instr(),like
- MySQL单表容量有多少_MySQL教程,MySQL
- 常用MySQL函数有哪些?_MySQL教程,MySQL,常用函数
- java中什么是方法_JAVA教程,java,方法
你 发表评论:
欢迎- MySQL教程排行
-
- 1Mysql如何挂盘_MySQL教程,Mysql
- 2mysql中key 、primary key 、unique key 与index区别详解_MySQL教程,mysql
- 3关于一道mysql查询面试题的思考解决过程_MySQL教程,mysql
- 4关于linux下mysql去除严格模式_MySQL教程,linux
- 5分离数据库和附加数据库的区别_MySQL教程,数据库
- 6如何修改mysql的默认时区_MySQL教程,mysql,时区
- 7利用mysql生成唯一序号_MySQL教程,mysql
- 8mysql数据库如何创建数据表_MySQL教程,mysql,数据表
- 9mysql实现每个专业分数段统计人数_MySQL教程,mysql
- 最新文章
- 广而告之