繁体   English   中英

内连接返回值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM