- 浏览: 1092381 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (453)
- Struts2 (30)
- Spring (14)
- iBATIS (6)
- Hibernate (13)
- JVM (5)
- JSON (10)
- Ajax (5)
- Flex (1)
- JavaScript (25)
- PowerDesigner (4)
- 项目管理 (7)
- 数据库 (29)
- 生活 (18)
- 软件应用 (21)
- 无线技术 (2)
- Linux (39)
- TOP开发学习 (2)
- JAVA工具小TIPS (2)
- Java通用 (52)
- XML (3)
- 软件测试 (29)
- Maven (10)
- Jquery (1)
- 正则表达式 (3)
- 应用服务器 (15)
- Android (5)
- linux 和windowx 下 tomcat 设置JVM (8)
- 应用服务器 连接池 (4)
- Linux 后台输出中文乱码 (1)
- Hadoop (28)
- python (2)
- Kafka (7)
- Storm (5)
- Elasticsearch (7)
- fddd (1)
最新评论
-
kafodaote:
Kafka分布式消息系统实战(与JavaScalaHadoop ...
分布式消息系统Kafka初步 -
小灯笼:
LoadRunner性能测试实战课程网盘地址:http://p ...
LoadRunner性能测试应用(八) -
成大大的:
Kafka分布式消息系统实 ...
分布式消息系统Kafka初步 -
hulalayaha2:
Loadrunner性能测试视频教程下载学习:http://p ...
LoadRunner性能测试应用(八) -
993042835:
搞好 谢谢
org.hibernate.exception.ConstraintViolationException: could not delete:
(一)
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select * from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
delete from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)
3、查找表中多余的重复记录(多个字段)
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
delete from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
(二)
比方说
在A表中存在一个字段“name”,
而且不同记录之间的“name”值有可能会相同,
现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;
Select Name,Count(*) From A Group By Name Having Count(*) > 1
如果还查性别也相同大则如下:
Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1
(三)
方法一
declare @max integer,@id integer
declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) >; 1
open cur_rows
fetch cur_rows into @id,@max
while @@fetch_status=0
begin
select @max = @max -1
set rowcount @max
delete from 表名 where 主字段 = @id
fetch cur_rows into @id,@max
end
close cur_rows
set rowcount 0
方法二
有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。
1、对于第一种重复,比较容易解决,使用
select distinct * from tableName
就可以得到无重复记录的结果集。
如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除
select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp
发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。
2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下
假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集
select identity(int,1,1) as autoID, * into #Tmp from tableName
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
select * from #Tmp where autoID in(select autoID from #tmp2)
最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)
(四)
查询重复
select * from tablename where id in (
select id from tablename
group by id
having count(id) > 1
)
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select * from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
delete from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)
3、查找表中多余的重复记录(多个字段)
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
delete from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
(二)
比方说
在A表中存在一个字段“name”,
而且不同记录之间的“name”值有可能会相同,
现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;
Select Name,Count(*) From A Group By Name Having Count(*) > 1
如果还查性别也相同大则如下:
Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1
(三)
方法一
declare @max integer,@id integer
declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) >; 1
open cur_rows
fetch cur_rows into @id,@max
while @@fetch_status=0
begin
select @max = @max -1
set rowcount @max
delete from 表名 where 主字段 = @id
fetch cur_rows into @id,@max
end
close cur_rows
set rowcount 0
方法二
有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。
1、对于第一种重复,比较容易解决,使用
select distinct * from tableName
就可以得到无重复记录的结果集。
如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除
select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp
发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。
2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下
假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集
select identity(int,1,1) as autoID, * into #Tmp from tableName
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
select * from #Tmp where autoID in(select autoID from #tmp2)
最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)
(四)
查询重复
select * from tablename where id in (
select id from tablename
group by id
having count(id) > 1
)
发表评论
-
MySQL主从复制延迟的监测及缓解
2016-05-07 12:12 4304MySQL的主从复 ... -
MySQL 設定 Master-Slave Replication 同步
2016-05-07 12:10 668Home MySQL -
MYSQL JDBC的批处理操作三种方式
2015-01-28 18:36 1927SQL批处理是JDBC性能优化的重要武器,经本人研究 ... -
MySQL记录存在则更新,不存在则插入
2014-12-15 20:43 775Sql代码 CREATE TABLE ... -
mysql 备份大表问题-mysqldump缺失-q参数导致MySQL被oom干掉
2014-03-16 19:20 1791某日凌晨收到db故障告警,上机器检查,mysql已经被 ... -
mysql-bin.00000*类似的文件是mysql的日志文件 的删除
2011-05-06 23:28 2355首先说明,mysql-bin.00000*类似的文件是mysq ... -
MYSQL INNODB 数据库恢复 转
2011-01-17 09:50 1860MYSQL INNODB 数据库恢复 昨天遇到个很郁闷的 ... -
mysql 备份问题
2010-12-14 13:58 932微尘 13:59:41mysqldump.exe --opt ... -
mysql int之显示长度
2010-11-03 09:30 2299mysql int之显示长度 作为SQL标准的扩展 ... -
正确修改MySQL最大连接数的三种好用方案
2010-10-25 17:20 24845以下的文章主要介绍的是正确修改MySQL最大连接数的三种好用方 ... -
RedHat下安装MySQL5.0(RPM包)手记 (转)
2010-10-16 19:16 1441RedHat下安装MySQL5.0(RPM包)手记 网 ... -
修改MYSQL最大连接数的3种方法详解
2010-10-13 12:45 1240修改MYSQL最大连接数的3 ... -
mysql replace的用法 替换某字段部分内容
2010-09-27 15:38 3037[mysql]replace的用法(替换某字段部分内容) ... -
mysql 表文件,表空间压缩
2010-09-24 12:46 5448我的mySQL使用一段时间后,表空间已变得很大(软件有较多的删 ... -
查询MySQL数据库库和索引占用的空间
2010-09-24 09:03 1355查整个库的状态:select concat(truncate( ... -
如何实时查看mysql当前连接数?
2010-09-24 08:36 27220如何实时查看mysql当前连接数? 1、查看当前所有连接的详细 ... -
mysql text 长度
2010-09-22 16:57 1953今天在做DB设计的时候在想用TEXT 是否能够满足将来的数据, ... -
常用数据库JDBC连接写法全攻略全攻略连接数据库常用DriverManager.getConnection
2010-07-15 16:00 1338常用数据库JDBC连接写法 ... -
Navicat 导入SQL文件
2010-06-29 11:52 2811Navicat 导入SQL文件 在左侧导航栏里选择你要 ... -
两表(多表)关联update的写法
2010-06-28 11:57 1742两表(多表)关联update的写法_SQL技巧发布于:软件开发 ...
相关推荐
前者创建了一个新的不含重复记录的表,后者则删除了所有非最小`id`的重复记录。 5. **源码与工具**:标签中的“源码”可能指的是用于实现上述查询的SQL语句,而“工具”可能是指使用MySQL客户端或其他数据库管理...
当涉及到数据去重时,MySQL 提供了多种方法来帮助我们有效地处理数据中的重复记录。本文将详细介绍如何利用 MySQL 查询语句来快速检测、验证以及统计表中的重复数据。 #### 快速查询重复数据 首先,我们来看一下...
删除MySQL中的重复记录是一项重要的数据清洗任务,它有助于维护数据库的完整性和提高查询效率。通过使用唯一键约束、`LOAD DATA INFILE`语句的不同选项,可以有效地处理重复记录问题。然而,在实际操作中,还需要...
本文主要给大家介绍了关于MySQL中查询、删除重复记录的方法,分享出来供大家参考学习,下面来看看详细的介绍: 查找所有重复标题的记录: select title,count(*) as count from user_table group by title having ...
sql 查出一张表中重复的所有记录数据 1.表中有id和name 两个字段,查询出name重复的所有数据 select * from xi a where (a.username) in (select username from xi group by username having count(*) > 1) 2、...
在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是...
多表update sql语句总结mysql锁表和解锁语句分享MySQL中基本的多表连接查询教程MySQL表字段设置默认值(图文教程及注意细节)MySQL中使用表别名与字段别名的基本教程mysql查询表里的重复数据方法mysql 导入导出数据库...
2. **标记重复记录**:可以创建一个临时表或使用子查询来标记出需要删除的重复记录。 3. **执行删除操作**:基于标记好的记录执行删除操作。 #### 示例代码解析 以下是一段示例SQL脚本,用于演示如何删除表`a`中的...
防止mysql重复插入记录的方法有很多种,常用的是ignore,Replace,ON DUPLICATE KEY UPDATE,当然我们也可以在php中加以判断了。...这样当有重复记录就会忽略,执行后返回数字0 还有个应用就是复制表,避
3. **数据设计**:如果`title`和`author`的组合是唯一的,那么可以考虑将这两个字段合并成一个新的复合主键,这样查询不重复记录会更加高效。 除了上述问题,MySQL还提供了其他方法来处理不重复记录,如`GROUP BY`...
本文实例讲述了mysql优化小技巧之去除重复项实现方法。分享给大家供大家参考,具体如下: 说到这个去重,脑仁不禁得一疼,尤其是出具量比较大的时候。毕竟咱不是专业的DB,所以嘞,只能自己弄一下适合自己去重方法了...
当查询的数据可能存在重复记录时,使用`DISTINCT`可以帮助我们过滤掉这些重复项,只保留唯一的数据。 在最简单的形式中,`DISTINCT`可以和`*`一起使用,如`SELECT DISTINCT * FROM tableName`,这将返回表`...
今天,我们将深入探讨如何使用`DISTINCT`关键字在MySQL中查询多条不重复记录值,这不仅是一种实用技能,也是提升数据处理效率的关键所在。 ### `DISTINCT`关键字详解 `DISTINCT`关键字在SQL查询中扮演着一个至关...
在MySQL数据库中,存储过程是一种预编译的SQL语句集合,可以用于执行复杂的数据库操作,如删除重复记录。在给定的存储过程`DelDuplicateRecord`中,它旨在删除具有相同标题的记录,但仅保留每个标题下最早的一条记录...
多表关联一对多查询取最新的一条数据,数据出现重复 由于历史原因,表结构设计不合理;产品告诉我说需要导出客户信息数据,需要导出客户的 所属行业,纳税性质 数据;但是这两个字段却在订单表里面,每次客户下单...
2. **主表与临时表关联查询**:然后,使用临时表和主表进行关联查询,以获取所有重复的记录,同时保持对`Source`的不区分大小写处理。 ```sql SELECT s.* FROM staticcatalogue s WHERE UPPER(s.Source) IN ...
本文主要探讨如何查询并删除MySQL中的重复数据,同时保留每个重复组中ID最小的一条记录。 首先,我们需要找到表中的重复数据。假设我们有一个名为`brand`的表,其中包含品牌名称`brandName`和其他字段,而我们想要...
MySQL数据库在处理数据时,有时会遇到重复记录的问题,这可能会影响数据的准确性和一致性。本文将详细介绍如何使用SQL语句来查询并删除这些重复记录。 首先,我们要理解什么是重复记录。在一个表中,如果根据特定的...