我有类似这些问题的要求。
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
答案 0 :(得分:2)
我猜您想删除empid
和ename
上的重复项,并保留最多sal
的重复项。
您可以通过存在来做到这一点:
delete from emp e
where exists (
select 1 from emp
where empid = e.empid and ename = e.ename and sal > e.sal
)