两个表联合查询A和B,以idcard为联合主键,想要的效果是查出A表所有的数据,如果a.idcard=b.idcard中B表有数据就查出来,否则该字段为空。例如 A 里面是姓名和身份证 B里面是身份证 和 年龄  B 表的数据是辅助查询,如何以A表数据为主查出全部?我的sql:
select a.idcard,a.name,b.age from A a,B b where a.idcard=b.idcard可是这么做得效果如果在B表没有记录的就查不出来了!我想要以A表为主的所有数据,如果B表里没有就将该值设置为空。求助!

解决方案 »

  1.   

    左连接
    select a.idcard,a.name,b.age from A a left join B b  on( a.idcard=b.idcard)
      

  2.   

    这是左外连接的典型应用。
    参考代码:SELECT idcard, a.name, b.age 
    FROM A a LEFT OUTER JOIN B b
    USING(idcard)
      

  3.   

    select a.idcard,a.name,b.age from A a,B b where a.idcard=b.idcard(+)
      

  4.   

    select a.idcard,a.name,b.age from A a,B b where a.idcard=b.idcard(+) 
      

  5.   

    谢谢指教!还是sql经验太浅。哈哈!