sql查询、删除重复相同数据的语句或只保留一条数据
1、查询(字段1, 字段2, 字段3)全部重复相同的数据
SELECT *
FROM 表
WHERE (字段1, 字段2, 字段3) IN (SELECT 字段1, 字段2, 字段3 FROM 表
GROUP BY 字段1, 字段2, 字段3 HAVING COUNT(*) > 1)
ORDER BY 排序字段
2、过滤(字段1, 字段2, 字段3)全部重复相同的数据,只显示一条(id最小或最大等)数据
注:(1)包含原本不重复的数据(建议使用)
SELECT *
FROM 表
WHERE id
IN (SELECT MIN(id) FROM 表 GROUP BY 字段1, 字段2, 字段3)
注:(2)不包含原本不重复的数据
SELECT id, 字段1, 字段2, 字段3
FROM 表
WHERE id
IN (SELECT MIN(id) FROM 表 GROUP BY 字段1, 字段2, 字段3 HAVING COUNT(*) > 1)
3、删除(字段1, 字段2, 字段3)全部重复相同的数据,只保留一条(id最小或最大等)数据
DELETE FROM 表
WHERE id IN(SELECT id FROM (SELECT id FROM 表 WHERE 某某条件
AND (字段1, 字段2, 字段3) IN (SELECT 字段1, 字段2, 字段3FROM 表 GROUP BY 字段1, 字段2, 字段3 HAVING COUNT(*) > 1)AND id NOT IN (SELECT MIN(id) FROM 表 GROUP BY 字段1, 字段2, 字段3)ORDER BY 排序字段) as result)
注意删除这里不能直接使用下面的语句,要对查询到的此表重新取别名,相当于新建了表然后再执行删除,否则会报错You can’t specify target table ‘表’ for update in FROM clause
,直译:你不能在FROM子句中指定更新的目标表,大概的意思是说,你不能这样执行sql语句 Delete From 表 Where id In (Select xxx From 表 Where 条件)
错误的sql语句!!!
DELETE FROM 表
WHERE id IN(SELECT id FROM 表 WHERE 某某条件
AND (字段1, 字段2, 字段3) IN (SELECT 字段1, 字段2, 字段3FROM 表 GROUP BY 字段1, 字段2, 字段3 HAVING COUNT(*) > 1 )AND id NOT IN (SELECT MIN(id) FROM 表 GROUP BY 字段1, 字段2, 字段3)ORDER BY 排序字段)
sql查询、删除重复相同数据的语句或只保留一条数据相关推荐
- oracle 查询重复数据并且删除, 只保留一条数据
数据库操作中,经常会因为导数据造成数据重复,需要进行数据清理,去掉冗余的数据,只保留正确的数据 一:重复数据根据单个字段进行判断 1.首先,查询表中多余的数据,由关键字段(name)来查询. sele ...
- SQL查询/删除重复记录
1.某个字段重复,根据该字段去除重复值返回唯一值. select distinct('字段名') from '表名' 2.查找表中全部的重复记录,根据单个字段判断重复记录 select * from ...
- 删除重复数据只保留一条数据
一.表结构与数据 CREATE TABLE `duptab` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(255) DEFAULT NUL ...
- 如何只保留1000条数据mysql_php实现只保留mysql中最新1000条记录
mysql_connect("localhost","root","root"); mysql_select_db("test&q ...
- mysql 查询删除重复数据,保留其中一条数据
一.查询重复数据 --------根据多个字段查询重复数据 SELECT* FROMtable_name a WHERE(a.字段1, a.字段2) IN (SELECT字段1,字段2FROMtabl ...
- MySql删除重复数据(只保留一条)
MySql删除重复数据 1. 问题引入 前一段遇到MySql数据重复的问题.由于重复向同一张表导入同一批数据,导致前台展示的数据重复,唯一方便快捷的方法莫过于利用delete操作删除重复数据(已经封板 ...
- oracle 快速移动数据和删除重复数据但保留其中一条数据
在项目中会遇到将一个表的部分数据移动另一个表中的事情. insert into table1 (id,其他属性) select t.a,t.c...from table2 t 注意属性类型大小要一致 ...
- 数据库SQL去重,保留一条数据
利用SQL,删除掉重复多余的数据,并且只保留一条数据. 1.查找表中多余的重复记录,重复记录是根据单个字段(teamId)来判断 select * from team where teamId in ...
- mysql sql 语句 查询重复数据 并删除重复数据 只保留一条
**#例1:根据手机号customer_id查询所有重复的数据** SELECT* FROMaad_apply_main WHEREcustomer_id IN (SELECTcustomer_idF ...
- 用SQL语句删除数据库重复数据,只保留一条有效数据
在实际开发中,可能会遇到数据库多条数据重复了,此时我们需要删除重复数据,只保留一条有效数据,用SQL语句怎么实现呢,下面我们模拟一下: 1.准备重复数据: 2.过滤出存在重复数据的信息: SQL语句: ...
最新文章
- 国际版Azure搭建Windows多种类型×××_三.配置SSTP ×××连接服务
- mysql导入数据出现Errcode: 2 - No such file or directory错误信息
- 安装shopex注意事项
- 序列化类型为XX的对象时检测到循环引用
- Appium环境搭建python篇(mac系统)
- [MOSS开发]:通过简单BUG跟踪Demo阐述用户控件对列表的操作
- qt学习之键盘事件( keyPressEvent)
- 第三节:21个新的语义化标签,你撸过几个?
- 五子棋python设计心得_python五子棋游戏的设计与实现
- mysql隔离性与隔离级别
- PacketFence ZEN 4.0.1 发布,网络接入控制
- java fri星期转_Java日期时间以及日期相互转换
- DELL官方证实:NVIDIA史上最大显卡质量事故
- 计算机专用英语(常用1695个单词,带音标)
- 项目管理文档目录结构
- Word转PDF后,排版错乱怎么办?
- Android内存泄漏检测工具大全
- [全新大碟]周杰倫 - 魔杰座
- sqlserver 数据误删除恢复
- java去除word修改痕迹_去除Word修订