删除所有与员工一起工作的员工(用户给出的员工姓名)

delete all employees who are working with employee(employee name given by user)

删除所有与该员工一起工作的人,除了该员工。(提示输入 ENAME)。 员工将有相同的部门 number.can 谁能帮助我。

delete from emptest e where e.deptno IN 
(select  f.deptno from emptest f where e.deptno=f.deptno AND
 e.empno<>f.empno AND f.ename='&ename' );

示例数据:

SQL> set ver off
SQL> undefine par_ename
SQL> select * from employee order by deptno, ename;

    DEPTNO ENAME      JOB              SAL
---------- ---------- --------- ----------
        10 CLARK      MANAGER         2450  --> department 10: if KING is a parameter,
        10 KING       PRESIDENT       5001  --> then CLARK and MILLER will be
        10 MILLER     CLERK           1300  --> deleted, but KING won't
        20 ADAMS      CLERK           1100
        20 FORD       ANALYST         3000
        20 JONES      MANAGER         2975
        20 SCOTT      ANALYST         3000
        20 SMITH      CLERK           1000
        30 ALLEN      SALESMAN        1600
        30 BLAKE      MANAGER         2850
        30 JAMES      CLERK            950
        30 MARTIN     SALESMAN        1250
        30 TURNER     SALESMAN        1500
        30 WARD       SALESMAN        1250

14 rows selected.

查询:

SQL> delete from employee e
  2    where e.deptno = (select a.deptno
  3                      from employee a
  4                      where a.ename = '&&par_ename'
  5                     )
  6      and e.ename <> '&&par_ename';
Enter value for par_ename: KING

2 rows deleted.

结果:

SQL> select * from employee order by deptno, ename;

    DEPTNO ENAME      JOB              SAL
---------- ---------- --------- ----------
        10 KING       PRESIDENT       5001  --> only KING remains in dept. 10
        20 ADAMS      CLERK           1100
        20 FORD       ANALYST         3000
        20 JONES      MANAGER         2975
        20 SCOTT      ANALYST         3000
        20 SMITH      CLERK           1000
        30 ALLEN      SALESMAN        1600
        30 BLAKE      MANAGER         2850
        30 JAMES      CLERK            950
        30 MARTIN     SALESMAN        1250
        30 TURNER     SALESMAN        1500
        30 WARD       SALESMAN        1250

12 rows selected.

SQL>