[英]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
我认为它只会返回一次 Emily,因为内部联接在两个表中都返回了两个值,但是 Emily 不是只在员工表中出现一次吗? 我不明白为什么它会返回 Emily 两次,即使它在任务表中列出了两次?
谢谢
Emily 有两个任务,因此她的姓名记录在连接中重复,每次匹配一次。 我可能会使用存在逻辑在这里得到你想要的结果:
SELECT e.name
FROM employee e
WHERE EXISTS (SELECT 1 FROM task t WHERE t.employee_id = e.id);
用简单的英语阅读,上面的查询表示返回任何员工姓名(一次),我们可以在task
表中找到至少一项任务。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.