select a.*,b.* from TA a left join TB b on a.RID = b.RID 
=
select b.*,a.* from TB a right join TA b on a.RID = b.RID select a.*,b.* from TA a left join TB b on a.RID = b.RID 
的b.*可能为null哈,哈哈,哈哈哈......

解决方案 »

  1.   

    第一句左表全部的﹐加上右表符合條件的為一條記錄﹐如果右表沒有符合條件﹐用null填允。
      

  2.   

    left join 是取左边的所有
    right join 是取右边的所有这两个是相对表的位置来说的select a.*,b.* from TA a left join TB b on a.RID = b.RID 

    select a.*,b.* from TB a left join TA b on a.RID = b.RID 前者是取 TA 表所有的记录+TB 表与之 RID 匹配的记录
    后者是取 TB 表所有的记录+TA 表与之 RID 匹配的记录
      

  3.   

    select a.*,b.* from TA a left join TB b on a.RID = b.RID 

    select a.*,b.* from TB a left join TA b on a.RID = b.RID 
    的不同:
    1、字段次序不同(不解释)
    2、纪录不同
    select a.*,b.* from TA a left join TB b on a.RID = b.RID
    包含TA有TB没有的RID
    select a.*,b.* from TB a left join TA b on a.RID = b.RID 
    包含TB有TA没有的RID
    哈,哈哈,哈哈哈......
      

  4.   

    select a.*,b.* from TA a left join TB b on a.RID = b.RID 

    select a.*,b.* from TB b right join TA a on a.RID = b.RID 
    一样
    select a.*,b.* from TA a right join TB b on a.RID = b.RID 

    select a.*,b.* from TB a left join TA b on a.RID = b.RID 
    一样
      

  5.   

    第一个是以TA为准,也就是选择TB表中存在于TA表的RID记录第二个是以TB为准,也就是选择TA表中存在于TB表的RID记录
      

  6.   

    left join 左表一定是全部顯示出來的。但右表就不一定了如﹕
    select a.*,b.* from TA a left join TB b on a.RID = b.RID 
    TA表中的數據肯定會全部顯示出來﹐而TB表只有符合條件才選出來﹐不符合的用null填a.id,a.name,b.id,b.name
    1     aaa    1    bbb
    2     xxx    2     qqq
    3     kkk    null  null

    。。
    查詢的結果大概是上面的樣子
     
      

  7.   

    select a.*,b.* from TA a left join TB b on a.RID = b.RID 

    select a.*,b.* from TB a left join TA b on a.RID = b.RID 
    有什么不同使用left join 时:from 子句为主表,即保证了主表的数据完整性,left join 后是连表, 也做附加信息表,但得到的数据都是以from 子句的主表,来附加从表的信息。使用right join时:与left join  正好反之,但用法是一样的。from接的是从表