SQL Server資料查詢之聯接查詢

2022-09-17 02:18:07 字數 2678 閱讀 5774

四:聯接查詢

1.聯接

1.1內聯接(inner join)

1.2外聯接(outer join)

1.2.1左聯接(left join)

1.2.2右聯接(right join)

1.3交叉聯接(cross join)

2.內聯接與自聯接

內聯接:作用於兩個表,一般通過兩個表中相同的字段的關係(=/<>)建立聯絡

自聯接:作用於自身表的兩個例項

3.外聯接

1.左聯接

left join 關鍵字會從左表 (table_name1) 那裡返回所有的行,即使在右表 (table_name2) 中沒有匹配的行。

select column_name(s)from table_name1left join table_name2 on table_name1.column_name=table_name2.column_name
注釋:在某些資料庫中, left join 稱為 left outer join。

"persons" 表:

id_p

lastname

firstname

address

city

1adams

john

oxford street

london

2bush

george

fifth **enue

new york

3carter

thomas

changan street

beijing

"orders" 表:

id_o

orderno

id_p

17789532

4467833

2245614

2456215

34764

65現在,我們希望列出所有的人,以及他們的定購 - 如果有的話。

您可以使用下面的 select 語句:

select persons.lastname, persons.firstname, orders.ordernofrom personsleft join orderson persons.id_p=orders.id_porder by persons.lastname
結果集:

lastname

firstname

orderno

adams

john

22456

adams

john

24562

carter

thomas

77895

carter

thomas

44678

bush

george

left join 關鍵字會從左表 (persons) 那裡返回所有的行,即使在右表 (orders) 中沒有匹配的

2.右聯接

right join 關鍵字會右表 (table_name2) 那裡返回所有的行,即使在左表 (table_name1) 中沒有匹配的行。

select column_name(s)from table_name1right join table_name2 on table_name1.column_name=table_name2.column_name
注釋:在某些資料庫中, right join 稱為 right outer join。

"persons" 表:

id_p

lastname

firstname

address

city

1adams

john

oxford street

london

2bush

george

fifth **enue

new york

3carter

thomas

changan street

beijing

"orders" 表:

id_o

orderno

id_p

17789532

4467833

2245614

2456215

34764

65現在,我們希望列出所有的定單,以及定購它們的人 - 如果有的話。

您可以使用下面的 select 語句:

select persons.lastname, persons.firstname, orders.ordernofrom personsright join orderson persons.id_p=orders.id_porder by persons.lastname
結果集:

lastname

firstname

orderno

adams

john

22456

adams

john

24562

carter

thomas

77895

carter

thomas

44678

34764

right join 關鍵字會從右表 (orders) 那裡返回所有的行,即使在左表 (persons) 中沒有匹配的行。

3.交叉聯接(cross join)

sql server 資料查詢優化

前幾周做專案遇到問題與大家分享 因讀取資料關聯n個表,我大部份都採用子查詢 in 當時資料量在10000記錄級內,而且在本地伺服器執行速度都比較快。當再一次匯入幾w條記錄後多表關聯 in 就宕機。然後瘋狂網上搜解決方案。查詢速度慢的原因很多,常見如下幾種 1 沒有索引或者沒有用到索引 2 i o吞吐...

SQL Server中資料查詢基礎

一.資料查詢基礎 1.查詢所有資料 select from 表名 2.根據限制條件查詢資料 select from 表名 where 限制條件 3.根據特定列進行排序,預設為公升序排列 select from 表名 order by 排序列名 公升序 降序 4.使用別名as select stude...

unity之資料查詢

嗨,歡迎來到我們的 狗刨網,我們今天講了很多內容,有資料庫,還有如何連線資料庫,每天我們都會更新新的內容,每天我們都該充實自己的生 活,每天都要有進步。一 資料查詢 基礎 查詢全部的列 select from 表 查詢部分行 select name,age from student where na...