left join 和right join 有什么区别。在联接查询的时候怎样区分那张表是左表,那张是右表?

解决方案 »

  1.   


    SELECT A.*,B.* FROM A LEFT JOIN B ON A.ID=B.AID 
    --显示A表中的所有数据,B表中AID与A表中的ID存在对应关系的记录就显示出来,否则就为NULL.
    --这时A为基表。B为辅表SELECT A.*,B.* FROM A RIGHT JOIN B ON A.ID=B.AID 
    --显示B表中的所有数据,A表中ID与B表中的AID存在对应关系的记录就显示出来,否则就为NULL.
    --这时B为基表。A为辅表
      

  2.   

    左连,左边是基表。
    右连,右边是基表。
    --> 测试数据:@a
    declare @a table([id] int)
    insert @a
    select 1 union all
    select 2 union all
    select 3 union all
    select 4
    --> 测试数据:@b
    declare @b table([id] int)
    insert @b
    select 2 union all
    select 3 union all
    select 4 union all
    select 5select * from @a a left join @b b on a.id=b.id
    /*
    id          id
    ----------- -----------
    1           NULL
    2           2
    3           3
    4           4
    */
    select * from @a a right join @b b on a.id=b.id
    /*
    id          id
    ----------- -----------
    2           2
    3           3
    4           4
    NULL        5
    */