我使用SQL Server
并有一个带有多个连接的查询。
我希望 SQL Server 先加入表 A 和 B,然后再加入表 C。
但是 SQL Server 先加入表 B 和 C,然后再加入表 A。
如何强制 SQL Server 观察我的加入顺序。
提前致谢。
我使用SQL Server
并有一个带有多个连接的查询。
我希望 SQL Server 先加入表 A 和 B,然后再加入表 C。
但是 SQL Server 先加入表 B 和 C,然后再加入表 A。
如何强制 SQL Server 观察我的加入顺序。
提前致谢。
如果没有强制顺序,一种方法是嵌套连接,因为下面的两个语句是相等的:
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),但它并不总是适用于组合联接
加入顺序与您在选择查询中给出的顺序相同。
这里没有强制逻辑,只有您给出的顺序和连接列条件才会过滤数据。
如果在连接子句中给出主键或复合键选项,那就很好了。如果您使用 2 个事务表,然后与主表连接,那么就会出现问题。
始终先使用主表或主表,然后逐个添加辅助表。
您可以检查执行计划。