内连接:
select *from a inner join b on a.id=b.id
外连接:
select *from a left outer join b on a.id=b.id  //以a为参照
select *from a right outer join b on a.id=b.id  //以b为参照
自连接忘记了,看帮助

解决方案 »

  1.   

    inner join 两边都必须有数据
    left join and right join 可以一边有数据
      

  2.   

    連接可以分為兩種:內連接和外連接,所謂自聯結就是表自己和自己做連接運算。
    內部聯結 (Inner Join) (此為典型的聯結作業,它將使用一些比較運算子,例如 = 或 <>)。這些聯結包含了等聯結 (Equi-Join) 與自然聯結 (Natural Join)。 
    內連接:下列的內部聯結可擷取與出版商住在同一個城市與同一州的作者
    USE pubs
    SELECT a.au_fname, a.au_lname, p.pub_name
    FROM authors AS a INNER JOIN publishers AS p
       ON a.city = p.city
       AND a.state = p.state
    ORDER BY a.au_lname ASC, a.au_fname ASC外部聯結有四種:
    LEFT JOIN 或 LEFT OUTER JOIN 
    左外部聯結的結果集包含了 LEFT OUTER 子句所指定之左資料表中的所有資料列,而非只有符合聯結資料行的資料列。若位於左資料表中的資料列在右資料表中並沒有符合的資料列,來自右資料表的所有選取清單資料行中的關聯結果集資料列將包含 Null 值。RIGHT JOIN 或 RIGHT OUTER JOIN。 
    右外部聯結是左外部聯結的反轉。來自右資料表的所有資料列將會被傳回。每次當右資料表資料列在左資料表中沒有符合的資料列時,左資料表就會傳回 Null 值。FULL JOIN 或 FULL OUTER JOIN。 
    完整外部聯結 (Full Outer Join) 將傳回左資料表與右資料表的所有資料列。每次當資料列在另一個資料表中沒有符合的資料列時,另一個資料表的選取清單資料行就會包含 Null 值。若資料表之間有符合的資料列,整個結果集資料列將包含基底資料表的資料數值。交叉聯結 (Cross Join)。 
    交叉聯結將傳回左資料表的所有資料列,左資料表的每個資料列將與右資料表的所有資料列合併。交叉聯結也稱為笛卡兒乘積 (Cartesian Product)。若要將所有作者包含於結果之中,而不管出版商是否位於相同的城市,使用 SQL-92 左外部聯結 (Left Outer Join):USE pubs
    SELECT a.au_fname, a.au_lname, p.pub_name
    FROM authors a LEFT OUTER JOIN publishers p
       ON a.city = p.city
    ORDER BY p.pub_name ASC, a.au_lname ASC, a.au_fname ASC若要將所有出版商包含於結果之中,而不管城市中是否有出版商位於相同的城市中,請使用 SQL-92 右外部聯結。下列為右外部聯結的 Transact-SQL 查詢與結果:USE pubs
    SELECT a.au_fname, a.au_lname, p.pub_name
    FROM authors AS a RIGHT OUTER JOIN publishers AS p
       ON a.city = p.city
    ORDER BY p.pub_name ASC, a.au_lname ASC, a.au_fname ASC若要將所有出版商與所有作者都包含於結果之中,而不管城市中是否有出版商位於相同的城市中,或出版商是否位於相同的城市中,請使用完整外部聯結。下列為 Transact-SQL 完整外部聯結的查詢與結果:USE pubs
    SELECT a.au_fname, a.au_lname, p.pub_name
    FROM authors a FULL OUTER JOIN publishers p
       ON a.city = p.city
    ORDER BY p.pub_name ASC, a.au_lname ASC, a.au_fname ASC
    USE pubs
    SELECT au_fname, au_lname, pub_name
    FROM authors CROSS JOIN publishers 
    ORDER BY au_lname DESC結果集包含了 184 個資料列 (authors 擁有 23 個資料列,而 publishers 擁有 8 個;23 乘以 8 等於 184)。