- 浏览: 884335 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (341)
- Ajax (1)
- Asp.net (18)
- Java (5)
- Php (27)
- JavaScript (19)
- jQuery (12)
- 正则表达式 (4)
- SEO优化 (1)
- Windows 应用 (5)
- Flash (12)
- Asp (9)
- CSS (10)
- SQL Server (6)
- Flex (1)
- Ubuntu (0)
- mysql (34)
- PHP框架 (2)
- Apache (10)
- html (3)
- 网页切入 (1)
- Linux (33)
- vc++ (38)
- 友情链接 (0)
- firefox 插件 (4)
- SEO (1)
- Apache 压力测试 (1)
- imacros教程(一):imacros变量 (0)
- JS调用imacros所用到的函数 (0)
- imacros教程(三):调用csv文件 (1)
- imacros教程(二):JS调用imacros所用到的函数 (1)
- imacros 常用代码 (1)
- CSS最大宽度 (1)
- svn (1)
- WordPress (1)
- 网线的两种接法 (1)
- TP-LINK WR 系列无线路由器安全设置 (1)
- mysql talble is full ERR1114 (0)
- 解决mysql的内存表“table is full”错误 (1)
- linux 用户操作 (1)
- CentOS 挂载 ntfs 移动硬盘 (1)
- linux 储蓄设备操作 (1)
- Starting MySQL. ERROR! Manager of pid-file quit without updating file. (1)
- extmail 1.1 升级到 1.2 (1)
- extmail (0)
- emos (2)
- squid 3.0 (2)
- centos 6 minimal 安装 (1)
- linux实用命令详解 (1)
- win7 (1)
- php 字符串大小写转换 (1)
- 跟踪路由 tracert (1)
- css英文单词首字母添加样式 (1)
- jquery iframe 操作 (1)
- php 获取时间今天明天昨天时间戳 (1)
- php 上传限制 (1)
- ckeditor 配置 (1)
- flash 显示在 div 下 (1)
- flash + php 留言本乱码问题 (1)
- squid purge 出现 access denied 的解决方法 (1)
- delphi (1)
- 让delphi嵌入的WebBrowser无边框无滚动条 (1)
- delphi打开一个IE窗口 (1)
- delphi 获取鼠标当前位置的相对坐标 (1)
- delphi 获取可执行文件的当前路径 (1)
- delphi webbrowser 常用方法示例 (1)
- javascript 禁止鼠标右键... (1)
- delphi 播放gif 动画 (1)
- delphi弹出信息框大全 (1)
- Delphi中禁止WebBrowser右键的方法 (1)
- DELPHI 让程序只能运行一次 (1)
- Delphi XE2 破解补丁注册机下载使用教程 (1)
- Delphi RAD Studio XE2编译程序体积大的问题 (1)
- delphi 制作圆角窗口 (1)
- delphi 窗口 (1)
- delphi 窗体全透明,但窗体上的控件不透明 (1)
- delphi 窗口阴影 (1)
- delphi 获取任务栏高度 (1)
- delphi bsNone 之后任务栏右键无反应 (1)
- delphi 程序打开隐藏软件任务栏条 (0)
- delphi bsNone后的相关问题解决方法 (1)
- delphi bsNone 后显示边框 (1)
- delphi url编码操作 (1)
- delphi 调用exe文件 (1)
- delphi dll窗体的制作和调用 (1)
- delphi dll 调用窗体时的数据传递 (0)
- delphi 窗口显示在屏幕右下角 (1)
- 内网穿透&UDP打洞 (1)
- delphi idhttp post应用 (1)
- inno setup 开机启动 (1)
- inno setup 添加桌面快捷方式 (1)
- Delphi实现程序只运行一次并激活已打开的程序 (1)
- 解决 float point division by zero (1)
- Delphi 窗体显示在最前面,并获得焦点 (1)
- delphi 点击关闭按钮时隐藏窗口 (1)
- delphi 非客户区右键点击 (1)
- delphi真正可以截获WINDOWS关机消息的源码 (1)
- delphi utf8转码 (1)
最新评论
-
zj7243886:
非常感谢,这东西解决我的问题;谢谢你的分享
Linux 安装 jpeg-6b 错误 ./libtool 命令未找到 -
丶Sk.Mabon:
能让html也绕过吗。。机房限制很悲剧
绕过 <?PHP exit(’Access Denied’); ?> 限制 -
丶Sk.Mabon:
请教gzip.php 的写法。万分感谢!
apache 开启 gzip -
hyxj1220:
火狐中单纯的定义这样的样式,貌似不行,必须要让容器浮动
英文长文本换行CSS -
逆水寒龙:
太好了,正好用上,谢谢博主共享
Asp.net 将中文汉字转换成拼音首字和拼音全拼
查询及删除重复记录的方法
(一)
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 my.cnf 配置优化
2013-02-23 13:22 1037PS:本配置文件针对Dell R710,双至强E5620、1 ... -
mysql的快速去除重复记录的方法
2013-02-19 09:21 898mysql的快速去除重复记录的方法。 1.相当有用的一招, ... -
Mysql: ERROR 1017 (HY000): Can't find file: './db/tablename.frm' (errno: 13)错误提示
2012-09-22 22:48 5037Mysql: ERROR 1017 (HY000): ... -
解决mysql出现“the table is full”的问题
2012-04-30 14:24 2010解决mysql出现“the table is full” ... -
mysql替换语句 部分替换
2011-09-11 20:36 1226将cdb_pms表subject字段中的Welcom to ... -
设置MySQL的系统变量以调优性能
2011-09-01 11:49 931请问如何设置MySQL的系 ... -
mysql 查找为中文的字段
2011-01-27 10:58 1680正则依旧风骚。。 在MySql中使用正则可以达到事半功倍 ... -
mysql 随机 rand
2011-01-15 14:41 843SELECT * FROM Table T JOIN (SEL ... -
mysql 获取随机数
2010-12-21 02:32 1002SELECT FLOOR(RAND()*10)+1 -
mysql 连接,状态,查询,检查
2010-12-10 15:30 1290mysql -u root -p; set g ... -
mysql table is read only 的解决方法
2010-12-09 21:13 1353Linux 下/usr/local/mysql/bin/my ... -
mysql 修改最大连接数
2010-12-08 19:19 922MYSQL数据库安装完成后,默认最大连接数是100,一般流 ... -
MySQL性能优化的参数简介
2010-12-07 13:03 907MySQL性能优化的参数简介 公司网站访问 ... -
Group之后合计(count)总数 – MySQL邯郸学步
2010-12-06 18:14 2327SELECT count (1) FROM ... -
mysql的left,right,substr,instr截取字符串,截取小数点float
2010-12-04 11:07 1353//----------------------------- ... -
mysql 用 length 查询字段长度
2010-12-04 10:57 9960SELECT count(*) FROM `news` WHE ... -
mysql 设置时间格式
2010-09-15 14:59 8613MYSQL 获取当前日期及日期格式 获取系统日期: NO ... -
mysql 建表字符集
2010-09-01 17:18 20131.列出MYSQL支持的所有字 ... -
mysql 获取重复记录数
2010-08-31 21:11 1537SELECT keyword, count( * ) AS c ... -
mysql 多表联查
2010-08-30 14:27 1177SELECT * FROM ( foo INNER JOIN ...
相关推荐
select cast(2.12000 as decimal(9,... 您可能感兴趣的文章:Mysql中存储UUID去除横线的方法解析mysql中:单表distinct、多表group by查询去除重复记录mysql SELECT语句去除某个字段的重复信息MySQL 去除重复数据实例详解
- 创建一个临时表`tmp`,通过`DISTINCT`关键字去除重复记录。 - 删除原始表`tableName`。 - 将临时表`tmp`的数据复制回`tableName`。 - 删除临时表`tmp`。 2. **SQL Server** - 使用`SELECT DISTINCT`语句创建...
然而,仅仅查询重复数据还不够,我们还需要删除多余的记录,仅保留每个重复组中ID最小的那一条。这里要注意的是,MySQL不允许在`DELETE`语句中直接引用被删除的表。因此,我们需要创建一个临时表来存储需要保留的...
distinct多表的唯一查询用:group bydistinct 查询多表时,left join 还有效,全连接无效,在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一...
进一步,如果想要找到可以安全删除的重复记录,即保留每个分组中的一条记录,我们可以使用子查询来确定哪些记录是多余的。以下是一个示例: ```sql SELECT t1.* FROM employee t1 WHERE (t1.emp_name) IN ( ...
2. 删除多余记录,保留每个`peopleId`的第一个记录: ```sql DELETE FROM people WHERE peopleId IN (SELECT peopleId FROM people GROUP BY peopleId HAVING COUNT(peopleId) > 1) AND MIN(id) NOT IN ...
而在Oracle 10g中,每个记录都有一个唯一的`rowid`,可以通过`rowid`来定位并删除重复记录中的多余项: ```sql -- Oracle 10g SELECT * FROM test; SELECT * FROM test GROUP BY id HAVING COUNT(*) > 1; SELECT ...
2. 删除多余重复记录,保留每个`(peopleId, seq)`最小`rowid`的记录: ```sql DELETE FROM vitae a WHERE (a.peopleId, a.seq) IN ( SELECT peopleId, seq FROM vitae GROUP BY peopleId, seq HAVING COUNT(*) > ...
例如,假设我们要删除所有first_name和last_name相同的多余记录,可以分两步操作: 1. 创建临时表存储不重复数据: ```sql CREATE TEMPORARY TABLE temp_person AS SELECT first_name, last_name FROM person_tbl ...
然后,删除`rn > 1`的行,从而去除重复。 总的来说,选择哪种方法取决于具体场景。对于较小的数据集,`DELETE`结合`NOT IN`可能就足够了。但面对大规模数据,创建临时表或使用窗口函数的方法通常更有效。在实际操作...
- **减少多余的行访问**: 在应用程序端进行联接减少了对同一行数据的重复访问。 - **减少网络流量和内存消耗**: 分解联接减少了数据传输量和内存使用。 #### 三、MySQL查询优化器工作原理 MySQL使用基于开销的...
* 对 MySQL 数据库去重的关键字是 `SELECT DISTINCT`,可以过滤掉多余的重复记录,仅保留一条记录。 * MySQL 多表连接有左连接、右连接、内连接三种方式,每种连接方式都有其特点和应用场景。 二、索引知识点 * ...
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 例二: ...
2. **多余记录的删除**: 如果需要删除多余的重复记录,仅保留`id`最小的记录,可以使用以下语句: ```sql DELETE FROM user WHERE nick_name IN ( SELECT nick_name FROM (SELECT nick_name FROM user GROUP BY...
- **主键**:是表中的一个或一组字段,其值能够唯一标识表中的一条记录,不允许有重复且不能为空。 - **超键**:如果一个字段或一组字段的值可以唯一标识表中的一行,那么它就是一个超键,它可以包含多余的列。 -...
- 主键:唯一标识表中每条记录的字段集合,不可重复,也不能为空。 - 外键:用来与其他表的主键建立联系的字段,表示本表记录和另一张表记录的关联关系。 - 超键:在关系数据库中能够唯一标识元组的属性集,超键...
- 主键(Primary Key)是表中唯一标识记录的字段或字段组合,不可重复且不允许为空。 - 超键(Super Key)是一个或一组属性,可以唯一标识一个记录,可能包含多余属性。 - 候选键(Candidate Key)是可能的主键,...
超键可能包含多余的属性。 - **候选键**:候选键是最小的超键,它不包含任何冗余属性,也就是说,候选键是能够唯一标识一条记录的最小属性集合。 - **外键**:外键是一个表中引用另一个表主键的字段,用于建立和...
删除表中的重复记录通常需要结合GROUP BY和HAVING子句以及ROWID(Oracle中的行标识符)来确定并删除多余的记录。 【存储过程和存储函数】 存储过程是预编译的SQL语句集合,存储在数据库中,可以在需要时调用,以...