这两种效果是一样的. ------解决方案-------------------- 不加LEFT OUTER 是等效的,SQL等效不是很常见么?有什么奇怪的?
比如 col in (1,2,3) 与 col=1 or col=2 or col=3 这不就是等效的么...
sql语句在执行前,会进行变型,变换成优化器容易识别的等效SQL,如果你对优化器识别的那种SQL感兴趣,可以去学学,减少一个变型的步骤,是可以稍微提升点效率的。 ------解决方案-------------------- 这两种写法都可以,不过你的第一种是内连接,第二种是外连接,结果集可能是不同的。
如果你想做外连接,并且使用第一种写法,那么可以这样:
SELECT *
FROM table_a a, table_b b, table_c c
WHERE a.a_id(+) = b.a_id
AND b.c_id(+) = c.c_id
------解决方案-------------------- create table table_a (id_1 number,id_2 varchar(2));
insert into table_a values(1,'a');
insert into table_a values(2,'b');
insert into table_a values(3,'c');
commit;
create table table_b (id_1 number,id_2 varchar(2));
insert into table_b values(2,'a');
insert into table_b values(3,'b');
insert into table_b values(4,'c');
commit;