2017-08-11 60 views
1

加入我寫了2個查詢一個是子查詢子查詢和內部的SQL

SELECT DISTINCT pp.employeeid 
FROM payment pp JOIN Employee e 
ON e.employeeid = pp.employeeid WHERE pp.employeeid IN 
(SELECT employeeid 
FROM employee 
WHERE branchid IN 
(SELECT branchid 
FROM branch 
WHERE code IN 
(SELECT code 
FROM bank p 
WHERE code = 15))); 
GO 

等與內部聯接查詢

select DISTINCT pp.employeeid from payment pp inner join employee e 
on e.employeeid=pp.employeeid 
inner join branch b on b.branchid=e.branchid 
inner join bank br on br.code=b.code 
where br.code=15 

這裏既有查詢返回相同的數據,我想問哪一個更合適?哪一個是最好使用..

+2

內部聯接是更可讀,並在猜測,我覺得這是更快看什麼它必須做。 – Leonidas199x

+0

更好地使用JOIN。比較查詢計劃,可能它們是相似的,可能不是 –

回答

0

加入VS子查詢:

您可以使用查詢到不同的表中的數據,並可以共享相同的結果,但也有一堆的差異。瞭解差異以及何時使用聯接或子查詢來獲取數據將是您的成功。 =)

加入: 用於根據兩個或多個表之間的相關列合併行。 Source

子查詢: 也被稱爲內部查詢或內選擇,而包含子查詢語句也稱爲外部查詢或外選擇。 Source

我更喜歡加入了這種操作,更容易閱讀:

select DISTINCT pp.employeeid 
from payment pp inner join employee e on e.employeeid=pp.employeeid 
inner join branch b on b.branchid=e.branchid 
inner join bank br on br.code=b.code 
where br.code=15