【问题标题】:INNER JOIN condition not workingINNER JOIN 条件不起作用
【发布时间】:2013-08-05 12:25:51
【问题描述】:

假设我们的表格为:

EMPNO   ENAME   DEPTNO
------  ------  ----------
7369    SMITH   20
7499    ALLEN   30
7654    MARTIN  30
7788    SCOTT   20
7839    KING    10
7900    JAMES   30

我们如何找到与 SCOTT 在同一部门工作的所有员工? 我尝试如下:

SELECT e.ename FROM employee e INNER JOIN employee m ON e.deptno=m.deptno;

,但结果不正确。

【问题讨论】:

  • Parado 解决方案有效吗?投票 upp 并将其设置为您的首选答案。

标签: sql inner-join aggregate-functions


【解决方案1】:

尝试添加如下条件

SELECT e.ename 
FROM employee e 
INNER JOIN employee m ON e.deptno=m.deptno
                      AND m.ENAME = 'SCOTT'
WHERE m.ENAME <> 'SCOTT'; -- exclude scott

您也可以尝试使用子查询

SELECT e.ename 
FROM employee e
WHERE EXISTS
(
   SELECT 1
   FROM employee M
   WHERE  M.ENAME = 'SCOTT'
   and E.deptno=M.deptno        
)
AND  m.ENAME <> 'SCOTT'; -- exclude scott; 

【讨论】:

  • 但我的一位朋友将解决方案邮寄给我:从员工中选择 e.ename e INNER JOIN 员工 m ON e.deptno=m.deptno AND m.ename = 'SCOTT' AND e.ename '斯科特';这个“”运算符是什么意思?
  • @RubbalBhusri 所以scott 不会包含在结果列表中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-10
  • 1970-01-01
  • 2015-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多