删除数据库表中的重复记录

oracle

select * from  gcfr_t_vch_delete E WHERE E.rowid < (SELECT max(X.rowid)
FROM gcfr_t_vch_delete X WHERE X.vchno = E.vchno and e.type = x.type and e.curragency = x.curragency);
--或者
select * from  gcfr_t_vch_delete E WHERE E.rowid > (SELECT min(X.rowid)
FROM gcfr_t_vch_delete X WHERE X.vchno = E.vchno and e.type = x.type and e.curragency = x.curragency);

以凭证的类型,编号,单位为判断重复的依据。删除重复的就是要删除多余的并且只留下一条。上述sql的意思就是查出重复的记录之后,以一个最大值为标准,把小于他的都删掉。或者以最小的为标准,把大于他的都删掉。这样就正好满足需求。

oracle利用rowid来保证数据的唯一性,其实用一个表字段也可以,但是要保证这个字段的唯一性,最好是主键。

mysql

select * from  gcfr_t_vch_delete E WHERE E.guid < (SELECT max(X.guid)
FROM gcfr_t_vch_delete X WHERE X.vchno = E.vchno and e.type = x.type and e.curragency = x.curragency);
--或者
select * from  gcfr_t_vch_delete E WHERE E.guid > (SELECT min(X.guid)
FROM gcfr_t_vch_delete X WHERE X.vchno = E.vchno and e.type = x.type and e.curragency = x.curragency);

mysql这里没有rowid,以guid为例,guid是表的主键。

原文地址:https://www.cnblogs.com/hkdpp/p/9406291.html

时间: 2024-09-28 16:00:24

删除数据库表中的重复记录的相关文章

Mysql 如何删除数据表中的重复数据!

1.使用distinct查询所有不重复的记录 2.创建数据表相同结构的临时表,将第一步的数据复制进去 create temporary table if not exists student_temp as (select distinct(name), sex from student); 3.truncate table student; 4.insert into student(id,name,sex) select null,name,sex from student_temp; My

如何删除表中的重复记录只保留其中一条?

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  

oracle删除一个表中的重复数据,且只保留一条

例子1:查找一个表中的重复数据,重复记录是根据单个字段(Id)来判断,表名为STUDENT SELECT ID , COUNT(1) FROM STUDENT T GROUP BY T.ID HAVING COUNT(ID) > 1 例子2:删除表中多余的重复记录,重复记录是根据单个字段(Id)来判断,只留有rowid最小的记录,表名为STUDENT DELETE FROM STUDENT WHERE ID IN (SELECT ID FROM STUDENT T GROUP BY T.ID H

删除表中的重复记录

● DELETE FROM people WHERE peopleName IN ( SELECT peopleName FROM people GROUP BY peopleName HAVING count(peopleName) > 1 ) AND peopleId NOT IN ( SELECT min(peopleId) FROM people GROUP BY peopleName HAVING count(peopleName) > 1 ) 原文地址:https://www.cn

跳转实现删除数据库表中的数据

PHP和HTML代码 <!doctype html><html ><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <m

057_删除聊表中的重复的节点

#include <iostream> #include <vector> using namespace std; typedef struct ListNode { int data; struct ListNode * next; ListNode(int d) : data(d), next(NULL){} }; ListNode *initList(int *array, unsigned int length) { if(!array) { return NULL; }

mysql 数据表中查找重复记录

//例一:select name1,count(*) as count from table_name group by name1 having count>1;//例二:select name1,name2 ,count(name1) as countb,count(name2) as count from table_name group by name1,name2 having count>1 and countb >1;

MySQL 处理重复数据:防止表中出现重复数据、统计、过滤、删除重复数据

MySQL 处理重复数据 有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据. 本章节我们将为大家介绍如何防止数据表出现重复数据及如何删除数据表中的重复数据. 防止表中出现重复数据 你可以在 MySQL 数据表中设置指定的字段为 PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据的唯一性. 让我们尝试一个实例:下表中无索引及主键,所以该表允许出现多条重复记录. CREATE TABLE person_tbl

Sql Server删除数据表中重复记录 三种方法

本文介绍了Sql Server数据库中删除数据表中重复记录的方法. [项目]数据库中users表,包含u_name,u_pwd两个字段,其中u_name存在重复项,现在要实现把重复的项删除![分析]1.生成一张临时表new_users,表结构与users表一样:2.对users表按id做一个循环,每从users表中读出一个条记录,判断new_users中是否存在有相同的u_name,如果没有,则把它插入新表:如果已经有了相同的项,则忽略此条记录:3.把users表改为其它的名称,把new_use