簡體   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