在Oracle SQL中需要查询

时间:2019-03-21 18:46:33

标签: sql oracle

我有类似这些问题的要求。

CREATE TABLE EMP(EmpId Int, EName varchar(10), Sal Int);

INSERT INTO EMP VALUES(1,'Tom',1000);
INSERT INTO EMP VALUES(2,'Lucy',1500);
INSERT INTO EMP VALUES(3,'Frank',2000);
INSERT INTO EMP VALUES(3,'Frank',3000);
INSERT INTO EMP VALUES(3,'Frank',4000);
INSERT INTO EMP VALUES(4,'Jenny',2000);
INSERT INTO EMP VALUES(5,'Will',1500);

表上没有约束。

我需要删除以下两行:

 3,Frank,2000
    3,Frank,3000

1 个答案:

答案 0 :(得分:2)

我猜您想删除empidename上的重复项,并保留最多sal的重复项。
您可以通过存在来做到这一点:

delete from emp e
where exists (
  select 1 from emp
  where empid = e.empid and ename = e.ename and sal > e.sal
)