提取与值相关的数据,但排除值本身

Extracting Data Related to a Value, but Excluding the Value Itself

所以我有一个日期 table 的员工,我想编写一个查询来提示用户员工的姓氏。然后查询显示与用户提供姓名的员工(不包括该员工)在同一部门的任何员工的姓氏和雇用日期。例如,如果我输入 Smith,查询将查找与 Smith 一起工作的所有员工,但不包括 Smith 本人。

到目前为止我写的代码是:

    select e.employee_id, e.last_name, e.department_id, e.hire_date 
    from employees e
    where e.department_id = (select department_id
                             from employees
                             where last_name = initcap('&l_name'))
    and e.last_name <> initcap('&l_name');

但是,当我 运行 它时,此代码不会提示我输入任何姓氏,它会自动显示单个姓氏、员工 ID、部门 ID 和雇用日期。有人可以帮忙吗?

在 Oracle 中您可以使用减号(从第一个结果集减去第二个 select 的结果集)

    select e.employee_id, e.last_name, e.department_id, e.hire_date 
    from employees e
    where e.department_id = (select department_id
                             from employees
                             where last_name = initcap('&l_name'))
    minus 
    select e.employee_id, e.last_name, e.department_id, e.hire_date 
    from employees 
    where last_name = initcap('&l_name')

好吧,多想了几次,我解决了:

 select e.employee_id, e.last_name, e.department_id
 from employees e
 where e.department_id = (select department_id 
                           from employees 
                           where last_name = initcap('&l_name'))
 and e.last_name <> initcap('&l_name');

此外,事实证明我不需要显示雇用日期。