我使用SQL Server
并拥有多个加入的查询。
我希望SQL Server首先连接表A和B,然后与表C连接。
但SQL Server首先连接表B和C,然后与表A连接。
如何强制SQL Server观察我的连接顺序。
提前致谢。
答案 0 :(得分:2)
答案 1 :(得分: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),但不适用于组合联接
答案 2 :(得分:-1)
加入订单与您在选择查询中提供的顺序相同。
此处没有强制逻辑,只有您提供的订单和加入列条件才会过滤数据。
如果在join子句中给出primary-key或composite key选项,那么非常好。如果您使用2个事务表然后加入主表,则会出现问题。
始终先使用main或master表,然后逐个添加辅助表。
您可以查看执行计划。