sql的各种join连接

 1 SELECT * FROM TableA INNER JOIN TableB
 2 ON TableA.name = TableB.name
 3 id  name       id   name
 4 --  ----       --   ----
 5 1   Pirate     2    Pirate
 6 3   Ninja      4    Ninja
 7 
 8 
 9 Inner join
10 产生的结果集中,是A和B的交集。
11  Venn diagram of SQL inner join 
12 SELECT * FROM TableA FULL OUTER JOIN TableB
13 ON TableA.name = TableB.name
14 id    name       id    name
15 --    ----       --    ----
16 1     Pirate     2     Pirate
17 2     Monkey     null  null
18 3     Ninja      4     Ninja
19 4     Spaghetti  null  null
20 null    null    1     Rutabaga
21 null    null    3     Darth Vader
22 
23 
24 Full outer join 产生A和B的并集。但是需要注意的是,对于没有匹配的记录,则会以null做为值。
25  Venn diagram of SQL cartesian join 
26 SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA.name = TableB.name
27 id  name       id    name
28 --  ----       --    ----
29 1   Pirate     2     Pirate
30 2   Monkey        null    null
31 3   Ninja      4     Ninja
32 4   Spaghetti    null    null
33 
34 
35 Left outer join 产生表A的完全集,而B表中匹配的则有值,没有匹配的则以null值取代。
36  Venn diagram of SQL left join 
37 SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA.name = TableB.name WHERE TableB.id IS null
38 id  name       id     name
39 --  ----       --     ----
40 2   Monkey    null    null
41 4   Spaghetti    null    null
42 
43 
44 产生在A表中有而在B表中没有的集合。
45  join-left-outer.png 
46 SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name WHERE TableA.id IS null OR TableB.id IS null
47 id    name       id    name
48 --    ----       --    ----
49 2     Monkey    null    null
50 4     Spaghetti    null    null
51 null    null    1     Rutabaga
52 null    null    3     Darth Vader
53 
54  

原文地址:http://www.nowamagic.net/librarys/veda/detail/936

posted @ 2016-03-02 22:53  临冰听雪丶  阅读(208)  评论(0编辑  收藏  举报