您的位置:首页 > 数据库

sql 删除重复数据保留一条

2017-10-25 16:19 501 查看
--创建测试表
CREATE TABLE TEST (
DEPTNO NUMBER(2),
DNAME VARCHAR(13),
LOC VARCHAR(14)
);

--插入测试数据
INSERT INTO TEST VALUES(10, 'test1', 'test2');
INSERT INTO TEST VALUES(10, 'test1', 'test2');
INSERT INTO TEST VALUES(20, 'test2', 'test3');
INSERT INTO TEST VALUES(20, 'test2', 'test3');

--查询所有记录
SELECT * FROM TEST;

--查询重复的记录
SELECT * FROM TEST WHERE deptno IN(
SELECT deptno FROM TEST GROUP BY deptno HAVING COUNT(deptno) > 1
)

--查询重复记录-1条记录
SELECT * FROM TEST WHERE deptno IN (
SELECT deptno FROM TEST GROUP BY deptno HAVING COUNT(deptno) > 1
)
AND ROWID NOT IN (SELECT MAX(ROWID) FROM TEST GROUP BY deptno HAVING COUNT(deptno) > 1)

--删除重复记录,保留一条
DELETE FROM TEST WHERE deptno IN (
SELECT deptno FROM TEST GROUP BY deptno HAVING COUNT(deptno) > 1
)
AND ROWID NOT IN (SELECT MAX(ROWID) FROM TEST GROUP BY deptno HAVING COUNT(deptno) > 1)

--删除重复记录,全部删除
DELETE FROM TEST WHERE deptno IN (
SELECT deptno FROM TEST GROUP BY deptno HAVING COUNT(deptno) > 1
)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: