在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

MySQL怎么消除重复行

113次阅读
没有评论

共计 2816 个字符,预计需要花费 8 分钟才能阅读完成。

自动写代码机器人,免费开通

这篇文章将为大家详细讲解有关 MySQL 怎么消除重复行,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

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

关于“MySQL 怎么消除重复行”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-16发表,共计2816字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 久久久一级 | 亚洲av无码专区亚洲av | 国产成人av一区二区三区不卡 | 女网址www女高清中国 | 超碰国产精品久久国产精品99 | 久久综合九色综合欧美狠狠 | 亚洲精品无码av人在线观看 | 亚洲av人无码激艳猛片 | 好看的中文字幕在线 | 国产成人午夜福在线观看 | 国产精品综合一区二区 | 91精品日本久久久久久牛牛 | 久久人妻av无码中文专区 | 亚洲av成人午夜电影在线观看 | 美日韩三级 | 国产一级又裸又黄又裸又 | 久久精品国产999大香线焦 | 亚洲欧洲日产国码 最新 | 久久久久久久久久久久中文字幕 | 亚洲中文字幕无码天然素人在线 | 免费大片黄在线观看 | 少妇人妻互换不带套 | 可以免费看的毛片 | 影视av久久久噜噜噜噜噜三级 | 毛片免费网站 | 精品无人乱码一区二区三区 | 亚欧洲精品在线视频免费观看 | 欧美男生射精高潮视频网站 | 香港日本三级亚洲三级 | 久久久久亚洲av成人网人人软件 | 国产成人自拍视频在线观看 | 国产一区二区精品在线观看 | 免费观看黄频视 | 疯狂的欧美乱大交 | 国产精品久久精品 | 久久精品免费大片国产大片 | 热99精品| 一级电影在线 | 欧美大陆日韩 | 亚洲免费观看视频 | 午夜福利一区二区三区在线观看 |