2 04 左右內連線查詢與union

2021-08-24 20:37:37 字數 1818 閱讀 9361

內連線查詢:

>select table1.name,table2.name from table1 inner join table2 on table1.name = table2.name;
左連線查詢:

>select table1.name,table2.name from table1 left join table2 on table1.name = table2.name;
右連線查詢:

>select table1.name,table2.name from table1 right join select2 on table1.name = table2.name;
內連線查詢,在on後面的條件不成立的時候,是不返回資料的;

左右連線查詢,在on後面的條件不成立的時候,依然返回資料,值為null,例如上面的查詢語句,table1表中若沒有某個名字與table2表中的名字相同,則還是會返回字段,而left 和 right 就是區分當前查詢的表,那張表為主導,left 的時候,table1表中沒有查到相等的名字時依然將所有行列出,而與之對應的table2的名字則為null;

多張表連線查詢:

select

table1.name,table2.name,table3.name

from

table1

inner join

table2

on table1.id = table2.id

join

table3 on table1.id = table3.id

;

示例:

select * from 表1

union

select * from 表2;

最後返回的結果將是兩張表的所有資料的集合

union語句滿足的條件是:每個select語句取出的列數必須相同,列名不一定相同,列名稱使用第一條select語句的列名稱;

union語句,在上述例子中,表1和表2中分別有一行資料完全相同,則會被合併,類似於並集;

union操作合併,耗時,消耗伺服器資源,造成浪費;

union all 操作在合併時,不去比較每一行是否一致,則會提公升合併的效能;

testa:

+----+-----+

| id | num |

+----+-----+

| 1 | 10 |

| 2 | 20 |

| 3 | 30 |

| 4 | 40 |

| 5 | 50 |

| 6 | 60 |

+----+-----+

testb:

+----+-----+

| id | num |

+----+-----+

| 1 | 20 |

| 2 | 23 |

| 3 | 234 |

| 4 | 234 |

| 5 | 35 |

| 6 | 45 |

+----+-----+

sql:

select id,sum(num) from

(select * from testa

union

select * from testb

)as tmp

group by id;

內 左 右 全連線查詢

sql中的連線查詢有inner join 內連線 left join 左連線 right join 右連線 full join 全連線 四種方式,它們之間其實並沒有太大區別,僅僅是查詢出來的結果有所不同。例如我們有兩張表 orders表通過外來鍵id p和persons表進行關聯。我們使用inner...

左右內連線

例表a aid adate 1 a1 2 a2 3 a3 表bbid bdate 1 b1 2 b2 4 b4 兩個表a,b相連線,要取出id相同的字段 select from a inner join b on a.aid b.bid這是僅取出匹配的資料.此時的取出的是 1 a1 b1 2 a2 ...

內連線與外連線(左右)的區別

資料庫 內連線與外連線 內連線是獲取兩個表的公共部分c,其中乙個表的id是另外乙個表的連線字段 select from a,b where a.aid b.bnameid與select from a join b on a.aid b.bnameid 的執行結果是一樣的。外連線 分為左連線和右連線 ...