select a.aa
a.bb
a.cc
b.aa
from a left join b where a.aa=b.aa
where a.aa='1'
b.dd='2'
为何查出来的是内联接的信息而不是左联接的信息,如果把b.dd='2'去掉就是左联接的信息了,但数据又不符合要求了。
请高手帮看一看如何解决。
a.bb
a.cc
b.aa
from a left join b where a.aa=b.aa
where a.aa='1'
b.dd='2'
为何查出来的是内联接的信息而不是左联接的信息,如果把b.dd='2'去掉就是左联接的信息了,但数据又不符合要求了。
请高手帮看一看如何解决。
a.bb
a.cc
b.aa
from a left join b on a.aa=b.aa
where b.dd='2'
把a表中的数据都定为a=1了 还怎么显示所有呢 如果想显示所有 去掉之
a.bb
a.cc
b.aa
from a left join b on a.aa=b.aa where b.dd='2'
and a.cc='2'
如果符合左边表,而不符合右边表信息的记录,则只显示左表信息。
此时如果去掉b.dd='2'则能查出信息,但不符合条件了。
SELECT a.aa,a.bb,a.cc FROM a WHERE a.cc='2'
与
SELECT b.aa FROM b WHERE b.dd='2'
之间的内连接了。估计如你所说,左连接不能加右边表的过滤条件。
通力,可以测试是否右连接时不能加左边表过滤条件。顺便说说替代方案,仅供参考。
SELECT * FROM
(SELECT a.aa,a.bb,a.cc FROM a WHERE a.cc='2') t1 LEFT JOIN
(SELECT b.aa FROM b WHERE b.dd='2') t2
ON t1.aa=t2.aa;麻烦是麻烦了些,不过可以出正确结果。具体原因,有代进一步研究。
select a.aa
a.bb
a.cc
b.aa
from a left join b on (a.aa=b.aa and b.dd='2' )
where a.aa='1'