内连接返回值

Inner Join returned values

我有一个查询,例如,

select name 

from employee 

inner join task on employee.id = task.employee_id 

order by name asc 

表格看起来像:

员工

id name 

1 Emily 

2 Sam 

3 AI 

4 Joe 

5 Daniel 

6 John

任务

task_id employee_id

 A123       1 

 D456       3 

 A122       1 

我相信上面的原始查询会导致:

Al
Emily

但实际上是:

Al
Emily
Emily

我认为它只会 return Emily 一次,因为 inner join returns 两个值都在 tables 中,但是 Emily 在员工 [=36= 中只出现一次]?我不明白为什么它 returns Emily 两次,即使它在任务 table?

中列出了两次

谢谢

Emily 有两个任务,因此她的姓名记录在联接中重复,每个匹配一次。我可能会使用存在的逻辑在这里得到你想要的结果:

SELECT e.name
FROM employee e
WHERE EXISTS (SELECT 1 FROM task t WHERE t.employee_id = e.id);

用简单的英语阅读,上面的查询说 return 任何员工姓名(一次),我们可以在 task table 中找到至少一个任务。