這些都是兩個連接的。
left join兩個連接,左表全總的,右表符合條件的記錄選出來,不符合條件的用null填。
right join兩個連接,右表全總的,左表符合條件的記錄選出來,不符合條件的用null填。
inner join兩個連接,左表和右表都符合條件的才選出來。

解决方案 »

  1.   

    INNER JOIN指定返回每对匹配的行。废弃两个表中不匹配的行。如果未指定联接类型,则这是默认设置。FULL [OUTER]  JOIN指定在结果集中包含左表或右表中不满足联接条件的行,并将对应于另一个表的输出列设为 NULL。这是对通常由 INNER JOIN 返回的所有行的补充。说明  按此处指定的方法指定外联接或在 WHERE 子句中使用旧式非标准的 *= 和 =* 运算符都是可行的。不能在同一语句中同时使用这两种方法。
    LEFT [OUTER]  JOIN指定在结果集中包含左表中所有不满足联接条件的行,且在由内联接返回所有的行之外,将另外一个表的输出列设为 NULL。RIGHT [OUTER]  JOIN指定在结果集中包含右表中所有不满足联接条件的行,且在由内联接返回的所有行之外,将与另外一个表对应的输出列设为 NULL。CROSS JOIN指定两个表的矢量积。这将返回相同的行,就好像在旧式的非 SQL-92 式联接中并没有指定 WHERE 子句。
      

  2.   

    那 
    select * from b,c where b.id=c.id

    select * from b join c on b.id=c.id
    有什么区别吗?
      

  3.   

    tx1icenhe(冒牌马可 V0.2)的够详细,楼主也可以自己去查联机帮助!
      

  4.   

    那 
    select * from b,c where b.id=c.id

    select * from b join c on b.id=c.id
    有什么区别吗?一样的
      

  5.   

    to gaodongsheng(东升)
    問題:
    select * from b,c where b.id=c.id

    select * from b join c on b.id=c.id
    有什么区别吗?
    結倫:兩者沒有什麼區別,只不過是書寫的不同
      

  6.   

    inner join:等聯結,意思是說只有左表與右表有匹配記錄,左右表才會顯示;否則都不顯示left join: 左聯結,意思是說以左表為主,如果左表與右表有匹配記錄,左右表都顯示;如果左表與右表沒有匹配記錄,左表顯示一條;右表顯示為NULLright join:右聯結,左聯結,意思是說以右表為主,如果左表與右表有匹配記錄,左右表都顯示;如果左表與右表沒有匹配記錄,右表顯示一條;左表顯示為NULL(與左聯結相反)join:等聯結,意思是說只有左表與右表有匹配記錄,左右表才會顯示;否則都不顯示(等同於inner join,它是inner join的簡寫,如果只寫join,sql server自動把它當作inner join處理)
      

  7.   

    上面寫錯了一點,現更正如下:
    inner join:等聯結,意思是說只有左表與右表有匹配記錄,左右表才會顯示;否則都不顯示left join: 左聯結,意思是說以左表為主,如果左表與右表有匹配記錄,左右表都顯示;如果左表與右表沒有匹配記錄,左表顯示一條,右表顯示為NULLright join:右聯結,意思是說以右表為主,如果左表與右表有匹配記錄,左右表都顯示;如果左表與右表沒有匹配記錄,右表顯示一條,左表顯示為NULL(與左聯結相反)join:等聯結,意思是說只有左表與右表有匹配記錄,左右表才會顯示;否則都不顯示(等同於inner join,它是inner join的簡寫,如果只寫join,sql server自動把它當作inner join處理)
      

  8.   

    declare @a table(iid int,pds_name varchar(10))
    insert @a select 10,'A' union all select 50,'K'
    declare @b table(iid int,pds_name varchar(10))
    insert @b select 10,'A' union select 20,'C' union all select 30,'D'
    --交集
    select a.iid,b.iid
    from @a a inner join @b b on a.iid=B.iid
    --@b表减交集
    select a.pds_name,b.iid,b.pds_name
    from @a a right join @b b on a.iid=b.iid where a.pds_name is null
    --@a表减交集
    select a.pds_name,b.iid,b.pds_name
    from @a a left join @b b on a.iid=b.iid where b.pds_name is null