有三个表t1、t2、t3,它们均只有一个int类型的列ID,t1的记录为(1),t2的记录为(1,1,2),t3的记录为(1,1,1,2,2)。分别写出下面两个语句执行的结果:
SELECT a.id,b.id,c.id
FROM t1 LEFT JOIN t2 ON t1.id=t2.id LEFT JOIN t3 ON t3.id=t2.id SELECT t1.id,t2.id,t3.id FROM t1 LEFT JOIN t2 ON t1.id=t2.id LEFT JOIN t3 ON t3.id=t2.id
SELECT a.id,b.id,c.id
FROM t1 LEFT JOIN t2 ON t1.id=t2.id RIGHT JOIN t3 ON t3.id=t2.id SELECT t1.id,t2.id,t3.id FROM t1 LEFT JOIN t2 ON t1.id=t2.id RIGHT JOIN t3 ON t3.id=t2.id
SELECT a.id,b.id,c.id
FROM t1 LEFT JOIN t2 ON t1.id=t2.id LEFT JOIN t3 ON t3.id=t2.id SELECT t1.id,t2.id,t3.id FROM t1 LEFT JOIN t2 ON t1.id=t2.id LEFT JOIN t3 ON t3.id=t2.id
SELECT a.id,b.id,c.id
FROM t1 LEFT JOIN t2 ON t1.id=t2.id RIGHT JOIN t3 ON t3.id=t2.id SELECT t1.id,t2.id,t3.id FROM t1 LEFT JOIN t2 ON t1.id=t2.id RIGHT JOIN t3 ON t3.id=t2.id
与
后面两个相同------ t3.id=t2.id /t3.id=t2.id 除了放的位置不相同,不会影响结果..
--第一个没有指定别名,会报错
t1.id,t2.id,t3.id --------
第三个同理,没有指定别名,会报错
a.id,b.id,c.id
前两个连接方式,首先以第一个表t1为基础-------
后两连是t1为基础连接t2,最后以t3为基础 连接t1,t2的结果集