hc学习平台

 找回密码
 立即注册
搜索
热搜: 活动 交友 javakc
 › 学习交流 › 其他 › 编写sql语句实现如下功能,删除表中多余的重复记录
查看: 1559|回复: 5
打印 上一主题 下一主题

编写sql语句实现如下功能,删除表中多余的重复记录

[复制链接]

2249

主题

0

帖子

0

博客

admin

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

跳转到指定楼层
楼主
发表于2015-01-24 12:49:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
-- 创建交易记录表
create table c_transInfo (
  id int(11) not null auto_increment,
  transDate datetime,
  cardNo varchar(3),
  type varchar(4),
  money decimal(10,2),
  remark varchar(10),
  primary key (id)
);
-- transInfo插入数据
insert into c_transInfo(transDate,cardNo,type,money,remark) values('2019-06-20 14:30:30','002','转入',7234,'工资');
insert into c_transInfo(transDate,cardNo,type,money,remark) values('2019-06-20 16:46:49','003','转入',8326,'工资');
insert into c_transInfo(transDate,cardNo,type,money,remark) values('2019-06-20 16:46:49','003','转入',8326,'工资');
insert into c_transInfo(transDate,cardNo,type,money,remark) values('2019-07-02 15:09:55','001','支取',500,'');
insert into c_transInfo(transDate,cardNo,type,money,remark) values('2019-07-02 15:09:55','001','支取',500,'');
insert into c_transInfo(transDate,cardNo,type,money,remark) values('2019-07-02 17:18:22','005','支取',1000,'');
insert into c_transInfo(transDate,cardNo,type,money,remark) values('2019-07-03 09:40:04','006','转出',127,'支付宝');
insert into c_transInfo(transDate,cardNo,type,money,remark) values('2019-07-03 09:40:04','006','转出',127,'支付宝');
insert into c_transInfo(transDate,cardNo,type,money,remark) values('2019-07-03 09:40:04','006','转出',127,'支付宝');
insert into c_transInfo(transDate,cardNo,type,money,remark) values('2019-07-05 17:19:34','007','存入',1000,'');
insert into c_transInfo(transDate,cardNo,type,money,remark) values('2019-07-02 17:49:23','008','转出',800,'还钱');
insert into c_transInfo(transDate,cardNo,type,money,remark) values('2019-07-03 19:22:28','009','转出',512,'超市购物');
insert into c_transInfo(transDate,cardNo,type,money,remark) values('2019-07-05 22:42:08','002','支取',300,'');
insert into c_transInfo(transDate,cardNo,type,money,remark) values('2019-07-23 04:58:59','003','转出',421,'支付宝');

0

主题

1450

帖子

0

博客

Sarbr

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-08 17:30:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
delete from emp  where rowid not in(select min(rowid) from test group by columnA,columnB)

0

主题

1700

帖子

0

博客

song

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-10 16:22:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
delete from emp where rowid not in (select min(rowid) from emp group by name,age)

0

主题

1451

帖子

0

博客

gaoye

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-09 13:25:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

select distinct 员工编号

from emp

0

主题

1576

帖子

0

博客

liufangyuan

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-09 14:13:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一张没有主键数据库表emp(员工表)删除重复数据!
delete from emp
 where emp.empno =

       (select empno from emp group by empno having count(1) > 1)


完整代码:

-- Create table
create table EMP
(
  EMPNO   VARCHAR2(20),
  EMPNAME VARCHAR2(20),
  DEPTNO  VARCHAR2(20)
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );

--删除

delete from emp
 where emp.empno =

       (select empno from emp group by empno having count(1) > 1)


沙发
发表于2016-09-09 18:05:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

delete from emp where rowid not in (select min(rowid) from emp group by name,age)

0

主题

1458

帖子

0

博客

梦紫菱0124

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-10 09:27:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
select distinct * from emp

0

主题

1636

帖子

0

博客

renmihe

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-10 14:10:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
--创建员工表
create table emp1(
id number;
name varchar2(8);
empsal number
);

--插入数据
insert into emp1 values(1,'张三',1200);
insert into emp1 values(2,'王五',4500);
insert into emp1 values(3,'李四',3600);
insert into emp1 values(1,'张三',1200);

--提交
commit;

--一张没有主键数据库表emp(员工表)删除重复数据
--使用rowid
--全部数据
select e.*,rowid from emp1 e order by id,name,empsal
--留下的数据
select id,name,empsal,min(rowid) from emp1 group by id,name,empsal
--删除数据
delete emp1 where rowid not in(
select min(rowid) from emp1 group by id,name,empsal)
--查询删除后的表数据
select * from emp1 

0

主题

1518

帖子

0

博客

Cracia

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-10 17:41:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

delete from emp where rowid not in

(select min(rowid) from emp group by name,id)


0

主题

507

帖子

0

博客

罗鹏

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-11 17:35:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DELETE from emp WHERE (id) IN ( SELECT id FROM emp GROUP BY id HAVING COUNT(id) > 1) AND ROWID NOT IN (SELECT MIN(ROWID) FROM emp GROUP BY id HAVING COUNT(*) > 1);
WR

0

主题

1674

帖子

0

博客

WR

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-14 11:32:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

如果有id主键:

delete db_user  where id not in (select min(id) from db_user group by  age, sex,city)

没有id主键的情况使用rowid删除重读数据

delete emp where rowid not in (select max(rowid) from emp group by ename)

 

0

主题

637

帖子

0

博客

wangwei37079

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2017-02-16 15:54:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
D

0

主题

651

帖子

0

博客

hanqian

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2017-08-25 09:11:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
delete * from emp where id not in (select distinct id from emp )

0

主题

1932

帖子

0

博客

740317431

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2017-08-24 08:42:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
select distinct * from user

0

主题

1902

帖子

0

博客

王之神判

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2017-08-24 08:58:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
delete from emp where rowid not in (select min(rowid) from emp group by name,age)

0

主题

104

帖子

0

博客

wangyanqing

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2017-08-24 13:20:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

create table emp(

        id varchar(20),

        name varchar(20), 

        sex varchar(20),

        age number,

        phone varchar(20)

);

0

主题

319

帖子

0

博客

wangjiaxing

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2017-09-05 18:27:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
drop table emp;
create table emp(
id varchar2(32) ,
deviceName varchar2(10),
model varchar2(14),
producer varchar2(4),
buyDate varchar2(32),
life  number(4),
weight number(4),
newtime varchar2(32)
)

0

主题

360

帖子

0

博客

付玲

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2017-10-25 15:11:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一张没有主键数据库表emp(员工表)删除重复数据!
delete from emp
 where emp.empno =
       (select empno from emp group by empno having count(1) > 1)

完整代码:
-- Create table
create table EMP
(
  EMPNO   VARCHAR2(20),
  EMPNAME VARCHAR2(20),
  DEPTNO  VARCHAR2(20)
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );

0

主题

435

帖子

0

博客

雒鑫鑫

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2017-12-19 17:28:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
delete   YourTable   
where   [id]   not   in   ( 
select   max([id])   from   YourTable   
group   by   (name   +   value)) 

0

主题

1213

帖子

0

博客

yanghao

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2018-09-07 14:07:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DELETE EMP WHERE ID NOT IN (SELECT MAX(ROWID) FROM EMP GROUP BY ENAME);

0

主题

982

帖子

0

博客

m1359292934

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2019-08-29 14:52:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
select * from employee where employeeId in (select employeeId from employee group by employeeId having count(employeeId) > 1)


站点统计|举报|Archiver|手机版|小黑屋|Comsenz Inc.

GMT+8, , Processed in 0.195171 second(s), 9 queries .

Powered by javakc! X1.0

© 2004-2014 javakc

f1208.com 备案号:京ICP备14030918号-1

返回顶部