【问题标题】:sub query and inner join in SQLSQL中的子查询和内连接
【发布时间】:2017-08-11 10:30:30
【问题描述】:

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

    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

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

【问题讨论】:

  • 内部连接更具可读性,我猜我认为它更快地查看它必须做什么。
  • 更好地使用 JOIN。比较查询计划,可能它们相似,可能不相似

标签: sql-server join subquery


【解决方案1】:

加入 VS 子查询:

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

加入: 用于组合两个或多个表中的行,基于它们之间的相关列。Source

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

我更喜欢 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2013-04-26
    • 2020-09-27
    • 1970-01-01
    • 2017-09-17
    • 2021-05-13
    相关资源
    最近更新 更多