sql-server - 我不明白在意想不到的地方带有 ON 的 FROM 子句

标签 sql-server tsql

我继承了一个查询。它是一些查询设计者的产品。查询的形式为:

select stuff
    from a
        join b
        join c on b.k = c.k
        join d on c.j = d.j
        on a.l = d.l
            and a.m = d.m
        join e on a.n = e.n

我期望连接是join t1 on t1.f = t0.f,就像第二、第三和第四行的“join”一样。我不知道如何使用后面没有“on”的表来读取此查询,并且稍后连续有两个“on”。

但是服务器不介意。它返回一组对我们很有用的数据集,直到现在我们想要更改我们正在选择的数据。服务器如何解析这个?

TIA

最佳答案

您将通过括号更好地理解查询:

select stuff
from a join
     (b join
      c
      on b.k = c.k join
      d
      on c.j = d.j
     )
     on a.l = d.l and a.m = d.m join
     e
     on a.n = e.n

对于内连接,括号并不重要。这种逻辑对于外连接可能很重要,但坦率地说,我从未发现有必要。我发现任何没有后续 onjoin 用法都很难理解。

关于sql-server - 我不明白在意想不到的地方带有 ON 的 FROM 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35906189/

相关文章:

sql - 在某些 Sql 代码中,如何获取给定索引的字符串的字符值?

SQL解析键值字符串

sql-server - 如何在 SQL Server 中使用 RANK()

c# - Entity Framework 连接向导找不到我的数据库

mysql - 如何在 SQL Server 中创建触发器,使用两个表来查找 ASP.NET 中的库存数量

sql - 我容易受到 SQL 注入(inject)攻击吗?

SQL 2005 - 查询查找行数最多的表

sql - 如果特定情况没有返回结果,则使用 count(*) 显示零

sql-server - 如何配置 SQL Server 以允许本地或远程计算机的数据库连接?

PHP 5.5 (MS) SQL 服务器功能未按预期工作