繁体   English   中英

SQL中的子查询和内部联接

[英]sub query and inner join in SQL

我写了2个查询,其中一个是子查询

    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

在这里,两个查询都返回相同的数据,我想问哪个更合适? 以及首选使用哪一种。

加入VS子查询:

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

联接:用于根据两个或多个表之间的相关列来组合它们。 资源

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

我更喜欢Joins进行这种操作,甚至更容易阅读:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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