表AA  AA   
1  22
2  33
3  44表BA  BB CC
1  23 33如果这样select A.A B.BB FROM A,B WHERE A.A *= B.A
那么返回的是1,23
2,
3,
后面的BB是空,这是对的
如果用
select A.A B.BB FROM A Left Join b ON A.A = B.A
那么返回的记录是一样的但是如果加了一个条件
select A.A B.BB FROM A,B WHERE A.A *= B.A AND B.CC = 33
那么这样,还是返回三条记录
1,23
2,
3,但是
select A.A B.BB FROM A Left Join b ON A.A = B.A where B.CC = 33
但是这样,就只有
1,23为什么,为什么???
不是这两个左连接是一样做的吗我是在sybase下,做的这个测试,不知道在sql下面,是不是也是这个结果,
这里高手很多,所以发这里来了

解决方案 »

  1.   

    select A.A,B.BB FROM A,B WHERE A.A *= B.A AND B.CC = 33==select A.A,B.BB FROM A Left Join B ON A.A = B.A AND B.CC = 33==select A.A,C.BB FROM A Left Join (select * from B WHERE CC = 33) C ON A.A = C.A
      

  2.   

    select A.A B.BB FROM A Left Join b ON A.A = B.A where B.CC = 33==select C.AA,C.BB from (select A.A,B.BB,B.CC FROM A Left Join b ON A.A = B.A) C where C.CC=33
      

  3.   

    select A.A B.BB FROM A,B WHERE A.A *= B.A AND B.CC = 33
    那么这样,还是返回三条记录
    1,23
    2,
    3,但是
    select A.A B.BB FROM A Left Join b ON A.A = B.A where B.CC = 33
    但是这样,就只有
    1,23--这不一样的
      

  4.   

    select A.A B.BB FROM A Left Join b ON A.A = B.A 
    where B.CC = 33--------这里都已经做了个条件判断了,只取符合这个条件的记录!