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'为常量,如若表达下条语句的含义,第一条语句该怎么修改
----这两句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';
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; 只有这样写你的查询结果才会正确。。 不会数据会乱。。
AND a.c(+) = '1' 没有这么写where条件的,你这个条件和 AND a.c = '1' 是没有区别的。
好像是这样: SELECT a.*,b.* FROM a,b WHERE b.c=a.c(+) and b.c='a' AND a.c='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';
LEFT JOIN a ON a.c=b.c and a.c='1' AND b.c='1' and a.c = b.c;
只有这样写你的查询结果才会正确。。
不会数据会乱。。
没有这么写where条件的,你这个条件和
AND a.c = '1'
是没有区别的。
SELECT a.*,b.* FROM a,b
WHERE b.c=a.c(+) and b.c='a' AND a.c='1';