【问题标题】:How would i leave out the name jones but display people with the same deptno我将如何省略名称 jones 但显示具有相同 deptno 的人
【发布时间】:2020-02-19 20:12:46
【问题描述】:
SQL> select empno, ename, deptno
  2  from empcopy
  3  where deptno =
  4      (select deptno
  5       from empcopy
  6       where ename like 'JONES');

 EMPNO ENAME          DEPTNO
------ ---------- ----------
  7369 SMITH              20
  7566 JONES              20
  7788 SCOTT              20
  7876 ADAMS              20
  7902 FORD               20

【问题讨论】:

  • 7566 JONES 20 行应该被删除,不应该吗?

标签: sql oracle subquery


【解决方案1】:

你可以这样做:

select 
empno, ename, deptno
from empcopy 
where DEPTNO in (select DEPTNO  from empcopy where ename ='JONES')
and ename <>'JONES'

【讨论】:

    【解决方案2】:

    您只需在 where 子句中添加一个谓词即可排除 Jones。

    SELECT
      empno,
      ename,
      deptno
      FROM
      empcopy
     WHERE
      deptno =(SELECT
                 deptno
                 FROM
                 empcopy
                WHERE
                 ename LIKE 'JONES'
              )
      AND ename != 'JONES';
    

    【讨论】:

    • 不等于是 或 != 在 SQL 中?
    【解决方案3】:

    另一种选择:

    SQL> with jones as
      2    (select ename, deptno
      3     from emp
      4     where ename = 'JONES'
      5    )
      6  select e.empno, e.ename, e.deptno
      7  from emp e join jones j on e.deptno = j.deptno and e.ename <> j.ename;
    
         EMPNO ENAME          DEPTNO
    ---------- ---------- ----------
          7369 SMITH              20
          7788 SCOTT              20
          7876 ADAMS              20
          7902 FORD               20
    
    SQL>
    

    【讨论】:

      【解决方案4】:

      另一个选项使用自连接,包括 ename 列的值的不等式:

      select e1.empno, e1.ename, e1.deptno
        from employees e1
        join employees e2 
          on e1.deptno = e2.deptno
         and e2.ename = 'JONES'
         and e1.ename != e2.ename
      

      Demo

      【讨论】:

        猜你喜欢
        • 2022-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-09
        • 2021-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多