日期:2014-05-17  浏览次数:20708 次

Oracle: 怎样用一条SQL语句删除表中字段重复的记录
本帖最后由 Tan_yixiu 于 2011-12-06 18:49:50 编辑
表名 : EMP


字段名称 Emp_no Name Type Salary Bonus
值 A001 严忠斌 正式 2900.00 2400.00
A002 蔺万国 正式 2900.00 2100.00
A001 严忠斌 正式 2900.00 2400.00
A003 蔡利平 试用 2600.00 1900.00
A002 蔺万国 正式 2900.00 2100.00
B001 张和平 试用 1700.00 1600.00
B002 陈延展 正式 1400.00 1450.00
B003 李红梅 正式 1250.00 1050.00
C001 刘梅 试用 1300.00 800.00
C002 李丽 正式 1400.00 700.00
. .
. .



请用一条SQL语句删除EMP 表中 EMP_NO字段重复的记录。

------解决方案--------------------
实测数据:

CREATE TABLE emp
(
    EmpNo   VARCHAR2(20),
    NAME    VARCHAR2(20),
    TYPE    VARCHAR2(20),
    Salary  NUMBER(8, 2),
    Bonus   NUMBER(8, 2)
);

INSERT INT emp VALUES('A001', '严忠斌', '正式', 2900.00, 2400.00);
INSERT INT emp VALUES('A002', '蔺万国', '正式', 2900.00, 2100.00);
INSERT INT emp VALUES('A001', '严忠斌', '正式', 2900.00, 2400.00);
INSERT INT emp VALUES('A003', '蔡利平', '试用', 2600.00, 1900.00);
INSERT INT emp VALUES('A002', '蔺万国', '正式', 2900.00, 2100.00);
INSERT INT emp VALUES('B001', '张和平', '试用', 1700.00, 1600.00);
INSERT INT emp VALUES('B002', '陈延展', '正式', 1400.00, 1450.00);
INSERT INT emp VALUES('B003', '李红梅', '正式', 1250.00, 1050.00);
INSERT INT emp VALUES('C001', '刘梅', '试用', 1300.00, 800.00);
INSERT INT emp VALUES('C002', '李丽', '正式', 1400.00, 700.00);


实测结果:

------解决方案--------------------
以测试过删除了重复记录
 delete from emp
 where empno in
       (select empno from emp group by empno having count(empno) > 1)