select t1*,t2.name from table1 t1,table2 t2 where t1.id(+)=t2.id我在别人的程序中看到这样的一条SQL,就是看不懂t1.id(+)=t2.id,其中的(+)=是什么意思啊?

解决方案 »

  1.   

    (+)=表示右连,right outer join
      

  2.   

    那么t1.id(+)=t2.id这个条件转换成一般的条件
    是什么样的呢?
      

  3.   

    比如说有这样两个表 
    table 1 字段:id name price 
    table 2 字段:id sid kof 
    select.... where table1.id=table2.sid(+) 
    右连接显示右边全部的和左边与右边相同的,执行结果,显示table1的所有元组,但只显示满足条件:table1.id=table2.sid(+)的table2的元组,对于没有与table1对应的元组,用一个万能行来填充,对于MS-SQL是用空行来填充的!
    偶就知道这么多了!
      

  4.   

    有的DBMS用*代替+号,t1.id(*)=t2.id 什么时候是右连接的这个问题,我觉得楼上的myh0305(seasail) 讲反了啊,‘*’or‘+’ 在哪一边就表示什么连接,比如t1.id(*)=t2.id 表示的是左外连接