有两个表,表A,表B。两个表之间的ID存在关联。现在我想取表A的全部记录。取表B中的username,取值规则是:当A表ID与B表ID存在关联时,则直接取。如果表A的ID在表B中不存在时,则为空。我的SQL语句如下:select A.*,B.username from A,B where A.ID = B.ID(+)如果是这样的话,那么查询出来的记录数应该等于A表的记录数,对吗??为什么我查询出来的记录数总是小于A表的记录数了?郁闷!!求各位高手帮忙,感激不尽。另外:如果B表的记录数大于A表,如果还是像上面一样关联的话,查出的记录数还是等于A表的记录数吗??

解决方案 »

  1.   

    select A.*,B.username from A left join B on A.ID = B.ID
      

  2.   

    select a.*,b.username from a,b where a.id=b.id(+);这个是左外连接,没有错,如果a.id 不在b中,则:b.username 为null.
      

  3.   

    这个问题我通过另一种方法实现了想要的结果,但这个地方还是没明白。为什么通过select A.*,B.username from A,B where A.ID = B.ID(+)查出的记录不等于A表中的记录!!!先结了,谢谢各位!