select * from a inner join b on a.id=b.id inner join c on a.id=c.id
1,先联接 A 和 B,得到结果集,再拿这个结果集 和 C做联接2,A,B,C, 同时一条一条的去匹配。
是1还是2呢?还是其它的?
1,先联接 A 和 B,得到结果集,再拿这个结果集 和 C做联接2,A,B,C, 同时一条一条的去匹配。
是1还是2呢?还是其它的?
调试欢乐多
select * from a , b ,c
where a.id=b.id and a.id=c.id
INNER JOIN
DBO.TESTXZNN3 AS B ON A.ROW=B.ROW
INNER JOIN
DBO.TESTXZNN4 AS C ON A.ROW=C.ROW
FROM DBO.TESTXZNN2 AS A
INNER JOIN
DBO.TESTXZNN3 AS B
ON A.ROW=B.ROW
INNER JOIN
DBO.TESTXZNN4 AS C
ON A.ROW=C.ROW
上图中选中的是SQL中第一个inner join 的运行,连接如下图:在图中看“输出列表”即可得知inner join 所连接的是那两张表了(A表和C表);
下图中选中的是SQL中第二个inner join 的运行下图中看“输出列表”即可得知第二个inner join所连接的是什么表了(AC连接后与B连接):
不管是哪一种,基本算法都是一个表作为内部输入,另一个表作为外部输入,然后进行比较,不存在二个以上的输入,以你说的为例(你这三个表都是内联接),以下几种都有可能,具体是哪一种这个没有固定的,优化器会自动选取一个最优的算法:
(A + B) + C
(A + C) + B
(B + C) + A
不存在(A + B + C)这种的