SELECT a.*,b.* FROM a,b WHERE  b.c = 'a' AND a.c(+) = '1';SELECT a.*,b.* FROM b LEFT JOIN a ON a.c = '1' WHERE b.c = 'a';这两句有什么区别,为什么结果不一样,其中'1'为常量,如若表达下条语句的含义,第一条语句该怎么修改

解决方案 »

  1.   


    ----这两句sql是有问题的连接查询不应该这样写的,如下写法才是正确的。
    SELECT a.*,b.* FROM  a,b 
    WHERE b.c=a.c and b.c='a' AND a.c(+)='1';SELECT a.*,b.* FROM  b 
    LEFT JOIN a ON a.c=b.c and a.c='1' AND a.c(+)='1';
      

  2.   

    SELECT a.*,b.* FROM  b 
    LEFT JOIN a ON a.c=b.c and a.c='1' AND b.c='1' and a.c = b.c;
    只有这样写你的查询结果才会正确。。
    不会数据会乱。。
      

  3.   

    AND a.c(+) = '1'
    没有这么写where条件的,你这个条件和
    AND a.c = '1'
    是没有区别的。
      

  4.   

    好像是这样:
    SELECT a.*,b.* FROM  a,b 
    WHERE b.c=a.c(+) and b.c='a' AND a.c='1';