我有一个查询,它返回在公司具有特定技能的员工的员工ID。
SELECT competences.employee_id
FROM competences
WHERE service_id = 2)
返回
1
2
4
7
我现在想使用此查询返回来查找这些员工的姓名 来自员工表。我试过这个,当然没有用,但可以弄明白怎么做。
SELECT employee.first_name, employee.last_name
FROM employee
WHERE employee.employee_id =
(SELECT competences.employee_id
FROM competences
WHERE service_id = 2)
如何使用子查询来获取员工?
答案 0 :(得分:1)
这是JOIN
的工作。你应该读一下JOIN。许多教程都可用。 Here is one
尝试这样的事情:
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
删除任何可能的重复员工姓名。如果我们知道列的名称和含义,我们可以提供更具体的建议来生成最有用的查询。
答案 1 :(得分:0)
使用'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)
答案 2 :(得分:0)
您可以简单地使用IN代替“=”
SELECT first_name, last_name
FROM employee
WHERE employee_id IN (SELECT employee_id
FROM competences
WHERE service_id = 2)