--关于连接的简单示例--测试数据
declare @a table(ida int)
insert @a select 1
union all select 2declare @b table(idb int)
insert @b select 2
union all select 3--内连接
select * from @a a join @b b on a.ida=b.idb/*--测试结果
只返回两个表中ida与idb相同的记录
ida         idb         
----------- ----------- 
2           2(所影响的行数为 1 行)
--*/
--左连接
select * from @a a left join @b b on a.ida=b.idb/*--测试结果
返回@a(左边表)所有的记录,及@b的idb与@a的ida对应的记录
没有对应的就用null表示ida         idb         
----------- ----------- 
1           NULL
2           2(所影响的行数为 2 行)
--*/
--右连接
select * from @a a right join @b b on a.ida=b.idb/*--测试结果
返回@b(右边表)所有的记录,及@b的idb与@a的ida对应的记录
没有对应的就用null表示ida         idb         
----------- ----------- 
2           2
NULL        3(所影响的行数为 2 行)
--*/
--全连接
select * from @a a full join @b b on a.ida=b.idb/*--测试结果
返回@a与@b的所有记录,没有对应的用NULL表示ida         idb         
----------- ----------- 
2           2
NULL        3
1           NULL(所影响的行数为 3 行)
--*/

解决方案 »

  1.   

    能连续多个联接吗?比如a  join b join c ?
      

  2.   

    当然可以
    a  join b on ...
       join c on ...
      

  3.   

    内联接 (inner join) 
    通过比较源表间共享的列的值从多个源表检索行的操作。内联接排除来自不具有与其它源表中的行匹配的行的源表的行
      

  4.   

    这个所有的SQL书上都有介绍的
    没有值的列用NULL补
      

  5.   

    zjcxc(邹建) 写的真详细~~学习~