table a
(
aid int
)table b
(
bid int
b_aid int
)两个表,a和b,记录是一对多的关系,红色的 b_aid 是 aid 的外键,
我写了如下的查询select * from a left outer join b on a.aid=b.b_aid
group by b.b_aid结果是如果a表中有一条记录在b表中没有对应的b_aid, 就不会被这条SQL检索出,请问怎样修改才能让所有的a表中的记录全部显示啊?

解决方案 »

  1.   

    select * from a left outer join b on a.aid=b.b_aid无需group by b.b_aid,如果你想排序则select * from a left outer join b on a.aid=b.b_aid
    order by b.b_aid
    == 思想重于技巧 ==
      

  2.   

    谢谢回复,不过有一点我忘记说了,
    一定要group by,
    因为我要统计 b表中有多少a相应的记录select   count(b.b_aid)   from   a   left   outer   join   b   on   a.aid=b.b_aid
    group   by   b.b_aid 
      

  3.   

    因为你是A left join B,所以会有A中有记录,但B中没有,此时记录如下
    A.aid, b.bid, b.b_aid
    -----  ------ --------
    3      12     3
    9      null   null所以你按b_aid,进行group 则不行试试
    select a.aid,count(b.bid) 
    from a left outer join b on a.aid=b.b_aid
    orderby a.aid
    == 思想重于技巧 ==
      

  4.   

    如果用FULL JOIN 就可以不丢失数据,不过MYSQL中没有FULL JOIN 语法。用
    LEFT JOIN UNION ALL  RIGHT JOIN 来模拟FULL JOIN .