您是否可以循环子查询的查询返回?

aiazj4mn  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(348)

我有一个查询,返回在公司拥有特定技能的员工的员工id。

SELECT competences.employee_id
FROM competences
WHERE service_id = 2)

退货

1
2
4
7

我现在想使用这个查询返回从employees表中查找这些雇员的姓名。我试过这个,当然没用,但我能想出办法。

SELECT employee.first_name, employee.last_name
FROM employee
WHERE employee.employee_id = 
(SELECT competences.employee_id
FROM competences
WHERE service_id = 2)

如何使用子查询获取员工?

c2e8gylq

c2e8gylq1#

用“in”代替等号

SELECT employee.first_name, employee.last_name
FROM employee
WHERE employee.employee_id in 
(SELECT competences.employee_id
FROM competences
WHERE service_id = 2)
x4shl7ld

x4shl7ld2#

这是我的工作 JOIN . 你应该读一读关于加入的书。有很多教程。这里有一个。
尝试以下操作:

SELECT DISTINCT employee.first_name, employee.last_name
   FROM employee
   JOIN competences ON employee.employee_id = competences.employee_id
  WHERE competences.srvice_id = 2

使用 IN 产生的结果与 JOIN . 但是它使用了所谓的依赖子查询,当表变大时,这对性能非常不利。 DISTINCT 删除任何可能重复的员工姓名。如果我们知道列的名称和含义,我们可以为生成最有用的查询提供更具体的建议。

2ledvvac

2ledvvac3#

您只需使用in而不是“=”

SELECT first_name, last_name
FROM employee
WHERE employee_id IN (SELECT employee_id
                        FROM competences
                       WHERE service_id = 2)

相关问题