在Oracle 11g中
两个表之间的自然连接有时候要加上(+),如下:
学生表: SNO,NAME
课程表: CNO ,CNAME 要求SNO的SUBSTR(SNO,3,1) = CNO取数据,
如下写法:
SUBSTR(R1.SNO,3,1) = R2.CNO(+)或SUBSTR(R1.SNO,3,1) = R2.CNO,(+)加或者不加,查询出来的数据条数不一样,不知道为什么,请高手指点,在等式后面添加(+)有啥作用?

解决方案 »

  1.   

    这个不是标准SQL语句,可能是Oracle的扩展,建议转Oracle版块
      

  2.   

    查了一下,哈哈,原来这样:(+)表示连接的方向,如果(+)号在左边,表示做连接,(+)在右边表示右连接,如下; A.CNO(+) = C.CNO ;(+)在右边,表示右连接, 即使左边的记录不存在,左边的记录会全部显示;
     A.CNO    = C.CNO(+) ;(+)在左边,表示左连接,即左边的记录会全部显示