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