【问题标题】:subquery or join?子查询或连接?
【发布时间】:2017-11-27 18:13:24
【问题描述】:

我正在使用子查询和连接来执行此语句: 显示财务部门现有的所有职位(请勿重复任何职位)

我的 Join 工作,我得到正确的输出,但子查询没有,我看不到错误 输出给了我这个:

select DISTINCT(job_title) 
from jobs 
where job_id = (select job_id from employees 
                where department_id = 
                (select department_id from departments
                where department_name like 'finance'))



select DISTINCT(job_title) from jobs j
inner join employees e 
on j.job_id = e.job_id
inner join departments d
on d.department_id = e.department_id
where department_name like 'finance'

【问题讨论】:

  • = 将 1 个值与一个值进行比较。您的子查询的结果可能是许多工作 ID。因此,您不能使用=!= 进行比较。您可以使用 IN 而不是 =
  • 用 IN 代替 =
  • @PatrickHonorez 是的,它现在可以工作了。谢谢,没看到

标签: mysql sql dbvisualizer


【解决方案1】:

没有测试,你可能想要:

select DISTINCT(job_title) 
from jobs 
where job_id IN (select job_id from employees 
                where department_id IN 
                (select department_id from departments
                where department_name like 'finance'))

【讨论】:

    【解决方案2】:

    如果您单独运行子查询,它会显示不止一行。

    当您执行相等操作时(job_id = something),作为查询的某事必须提供单个值作为结果,该值隐式不能出现在多行中)。

    【讨论】:

      猜你喜欢
      • 2021-02-10
      • 1970-01-01
      • 2021-01-28
      • 2021-08-30
      • 1970-01-01
      • 1970-01-01
      • 2013-08-04
      • 2011-09-25
      • 2023-02-25
      相关资源
      最近更新 更多