Sql server SQL中的子查询和内部联接

Sql server SQL中的子查询和内部联接,sql-server,join,subquery,Sql Server,Join,Subquery,我写了两个查询,一个是子查询 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 F

我写了两个查询,一个是子查询

    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

这里两个查询返回相同的数据,我想问哪一个更合适?并且哪一个更适合使用..

连接与子查询:

您可以使用从不同的表中查询数据,并且可能共享相同的结果,但这两者之间存在许多差异。了解差异以及何时使用联接或子查询访问数据将是您的成功。=)

加入: 用于根据两个或多个表之间的相关列合并两个或多个表中的行

子查询: 也称为内部查询或内部选择,而包含子查询的语句也称为外部查询或外部选择

对于这种操作,我更喜欢联接,它更易于阅读:

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

连接与子查询:

您可以使用从不同的表中查询数据,并且可能共享相同的结果,但这两者之间存在许多差异。了解差异以及何时使用联接或子查询访问数据将是您的成功。=)

加入: 用于根据两个或多个表之间的相关列合并两个或多个表中的行

子查询: 也称为内部查询或内部选择,而包含子查询的语句也称为外部查询或外部选择

对于这种操作,我更喜欢联接,它更易于阅读:

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

内部连接更具可读性,我猜它可以更快地了解它必须做什么。更好地使用连接。比较查询计划,可能它们是相似的,可能不是。内部连接更具可读性,我猜它可以更快地了解它必须做什么。更好地使用连接。比较查询计划,它们可能相似,也可能不相似