php判断字段重复,删除完全重复和部分关键字段重复的记录
重复记录分为两种,第一种是完全重复的记录,也就是所有字段均重复的记录,第二种是部分关键字段重复的记录,例如Name字段重复,而其它字段不一定重复或都重复。
1、第一种重复很容易解决,不同数据库环境下方法相似:
Mysql
create table tmp select distinct * from tableName;
drop table tableName;
create table tableName select * from tmp;
drop table tmp;
SQL Server
select distinct * into #Tmp from tableName;
drop table tableName;
select * into tableName from #Tmp;
drop table #Tmp;
Oracle
create table tmp as select distinct * from tableName;
drop table tableName;
create table tableName as select * from tmp;
drop table tmp;
发生这种重复的原因是由于表设计不周而产生的,增加唯一索引列就可以解决此问题。
2、此类重复问题通常要求保留重复记录中的第一条记录,操作方法如下。 假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集
Mysql
alter table tableName add autoID int auto_increment not null;
create table tmp select min(autoID) as autoID from tableName group by Name,Address;
create table tmp2 select tableName.* from tableName,tmp where tableName.autoID = tmp.autoID;
drop table tableName;
rename table tmp2 to tableName;
SQL Server
select identity(int,1,1) as autoID, * into #Tmp from tableName;
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,Address;
drop table tableName;
select * into tableName from #Tmp where autoID in(select autoID from #Tmp2);
drop table #Tmp;
drop table #Tmp2;
Oracle
DELETE FROM tableName t1 WHERE t1.ROWID > (SELECT MIN(t2.ROWID) FROM tableName t2 WHERE t2.Name = t1.Name and t2.Address = t1.Address);
说明:
1. MySQL和SQL Server中最后一个select得到了Name,Address不重复的结果集(多了一个autoID字段,在大家实际写时可以写在select子句中省去此列)
2. 因为MySQL和SQL Server没有提供rowid机制,所以需要通过一个autoID列来实现行的唯一性,而利用Oracle的rowid处理就方便多了。而且使用ROWID是最高效的删除重复记录方法。
DISCUZ Username 重复:
SELECT max(uid), username, count( * ) AS gg
FROM `cdb_members`
GROUP BY username
ORDER BY gg DESC
LIMIT 0 , 30
posted on 2008-08-09 03:33 Prog 阅读(183) 评论(0) 编辑 收藏 引用 网摘 所属分类: Mysql
php判断字段重复,删除完全重复和部分关键字段重复的记录相关推荐
- MySQL查询重复字段,及删除重复记录的方法
MySQL查询重复字段,及删除重复记录的方法(转) Submitted by wiley on Thu, 09/03/2009 - 09:36 [教学] MySQL查询重复字段,及删除重复记录的方法 ...
- 算法设计 删除无序单链表中的值域重复的结点
删除无序单链表中的值域重复的结点 题目: 有一个带头结点的单链表head,其中可能出值域重复的结点,设计一个算法删除值域重复的结点.要求在主函数中调用设计的算法,给出结果. 思路:删除某个结点值的重复 ...
- pandas使用drop_duplicates函数基于subset参数指定的数据列子集删除重复行、并设置keep参数保留重复行中的最后一个数据行
pandas使用drop_duplicates函数基于subset参数指定的数据列子集删除重复行.并设置keep参数保留重复行中的最后一个数据行 目录
- python 删除字符串中的所有相邻的重复项
| 删除字符串中的所有相邻的重复项 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们.在 S 上反复执行重复项删除操作,直到无法继续删除.在完成所有重复项删除操作后 ...
- c语言去掉数组中重复的,C语言删除无序整型数组中的重复元素及时间复杂度
数组重复的问题在任何编程中都会有碰到了,这里介绍C语言删除无序整型数组中的重复元素及时间复杂度,希望对各位有帮助. 遇到一个题,大概要求是写一个函数处理来去掉一个无序的整型数组(例如int i_arr ...
- sql查询字段重复的数据 并且修改数据某个字段
1.sql查询字段重复的数据 并且修改所有行某个字段值 UPDATE 表名 a SET a.要修改的字段名 = 1 WHEREa.重复字段 IN (SELECTb.重复字段FROM(SELECTc.重 ...
- mysql 查询相同字段的数据_MySql 几种查询相同字段中相同数据,及删除相同字段的相同数据的方法...
比如现在有一人员表 (表名:peosons) 若想将姓名.身份证号.住址这三个字段完全相同的记录查询出来 select p1.* from persons p1,persons ...
- python数组重复数据去重_JS实现数组去重(重复的元素只保留一个)
1.遍历数组法 它是最简单的数组去重方法(indexOf方法) 实现思路:新建一个数组,遍历去要重的数组,当值不在新数组的时候(indexOf为-1)就加入该新数组中: var arr=[,,,,,, ...
- php导入excel先检查,php 如何在导入Excel数据时检查Mysql数据库内容是否存在,避免重复录入?:怎么样筛选excel表格重复的数据库...
php 如何在导入Excel数据时检查Mysql数据库内容是否存在,避免重复录入? 如果不想每询一次以提前做一个统询 $sql=mysql_query("select distinct Co ...
最新文章
- matlab 报错 javax,[求助]安装报错,求大佬帮忙
- “纹身贴皮电路“:未来在皮肤上画个电路就能监测身体健康状况
- OpenERP的优化---使用Nginx反向代理
- 成功解决model_selection\_search.py:584: DeprecationWarning: fit_params as a constructor argument was d
- linux内核唤醒过程,Linux内核启动过程分析
- leetcode228. 汇总区间
- java怎么使用泛型_java泛型 7 泛型的基本介绍和使用
- 兴奋的.NET@linux-Develop
- [转载] Python Numpy
- 简单几何(线段相交) POJ 2653 Pick-up sticks
- JavaScript的简单复习
- 语料库资源————(一)
- win10电脑桌面透明便签_win10系统在桌面添加透明便签的图文技巧
- 【DSP入门】DSP2803x算法加速利器之CLA
- JavaScript是什么?看着一篇就够了
- 在服务器上安装centos系统
- 苹果支付Java服务器实现
- 数据科学家也良莠不齐 蹩脚数据科学家的10个迹象
- HashTable详解、源码、扩容、深入理解HashTable、HashTable多线程并发问题
- 关键词:MAU,DAU,DAU/MAU