0

我使用SQL Server并有一个带有多个连接的查询。

我希望 SQL Server 先加入表 A 和 B,然后再加入表 C。

但是 SQL Server 先加入表 B 和 C,然后再加入表 A。

如何强制 SQL Server 观察我的加入顺序。

提前致谢。

4

3 回答 3

3

您可以使用查询提示FORCE ORDER

查询提示 (Transact-SQL)

指定在查询优化期间保留查询语法指示的连接顺序。

于 2014-06-24T05:23:36.240 回答
0

如果没有强制顺序,一种方法是嵌套连接,因为下面的两个语句是相等的:

SELECT *
FROM A 
JOIN B ON B.ID = A.BID
JOIN C ON C.ID = A.CID

SELECT * 
FROM (A JOIN B ON B.ID = A.BID) 
JOIN C ON C.ID = A.CID

但是,这是可行的,因为所有联接都是内部的(也适用于所有 LEFT OUTER),但它并不总是适用于组合联接

于 2018-07-20T12:39:57.783 回答
-1

加入顺序与您在选择查询中给出的顺序相同。

这里没有强制逻辑,只有您给出的顺序和连接列条件才会过滤数据。

如果在连接子句中给出主键或复合键选项,那就很好了。如果您使用 2 个事务表,然后与主表连接,那么就会出现问题。

始终先使用主表或主表,然后逐个添加辅助表。

您可以检查执行计划。

在此处输入图像描述

于 2014-06-24T05:26:18.527 回答