SELECT dbo.table1.*, dbo.table2.*,dbo.table3.* FROM dbo.table1 RIGHT OUTER JOIN dbo.table2 ON dbo.table1.col1 = dbo.table2.col2 RIGHT OUTER JOIN dbo.table3 ON dbo.table1.col1 = dbo.table3.col3....
我写详细些,希望有人回答。 有一个sql里面包含有一个表对5、6个表的左连接,是用oracle特有(+)表达式写的 and table1.a=table2.a(+) and table1.b=table3.b(+) and table1.c=table4.c(+) ………… 改写成 from (table1 t1 left join table2 t2 on table1.a=table2.a),(table1 t11 left join table3 t3 on table1.b=table3.b),………… 这个talbe1 的多次出现,并且名称还不能重复,效率非常低(大概4个join 后就不执行了) 现在我寻求解决方案: 1,能否用改写成不使用join的标准sql? 2,如果改成程序实现应该怎么建模? 3,有没有效率更高的一表join多表的标准sql写法? 4,高手有什么建议?
FROM dbo.table1
RIGHT OUTER JOIN dbo.table2
ON dbo.table1.col1 = dbo.table2.col2
RIGHT OUTER JOIN dbo.table3
ON dbo.table1.col1 = dbo.table3.col3....
有一个sql里面包含有一个表对5、6个表的左连接,是用oracle特有(+)表达式写的
and table1.a=table2.a(+)
and table1.b=table3.b(+)
and table1.c=table4.c(+)
…………
改写成
from (table1 t1 left join table2 t2 on table1.a=table2.a),(table1 t11 left join table3 t3 on table1.b=table3.b),…………
这个talbe1 的多次出现,并且名称还不能重复,效率非常低(大概4个join 后就不执行了)
现在我寻求解决方案:
1,能否用改写成不使用join的标准sql?
2,如果改成程序实现应该怎么建模?
3,有没有效率更高的一表join多表的标准sql写法?
4,高手有什么建议?