内连接返回值
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 中找到至少一个任务。
我有一个查询,例如,
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 中找到至少一个任务。