資料庫操作中,我們需要的結果可能在兩張表甚至多張表中,這時候就需要表連接操作,多表查詢中的各個表之間的欄位會存在連接,比如主外鍵關聯,可以使用主外鍵來關聯每張表,表連接方式有以下幾種:
- JOIN: 如果表中有至少一個匹配,則回傳行
- LEFT JOIN(左連接): 即使右表中沒有匹配,也從左表回傳所有的行
- RIGHT JOIN(右連接): 即使左表中沒有匹配,也從右表回傳所有的行
- FULL JOIN(全連接): 只要其中一個表中存在匹配,就回傳行
下面用兩個表演示下上面4種連接方式,兩表資料為:

1. JOIN連接:如果表中有至少一個匹配,則回傳行
執行SQL陳述句:
SELECT
stu.ID,
stu.StudentID,
stu.StudentName,
sco.ID,
sco.Score,
sco.StudentID
FROM [BlogDemo].[dbo].[Student] stu
Join [BlogDemo].[dbo].[Score] sco On sco.StudentID=stu.StudentID
結果如下,查詢結果集只回傳兩表匹配StudentID欄位相同行,

2.LEFT JOIN(左連接): 即使右表中沒有匹配,也從左表回傳所有的行
執行SQL陳述句:
SELECT
stu.ID,
stu.StudentID,
stu.StudentName,
sco.ID,
sco.Score,
sco.StudentID
FROM [BlogDemo].[dbo].[Student] stu
Left Join [BlogDemo].[dbo].[Score] sco On sco.StudentID=stu.StudentID
結果如下,查詢結果集只回傳右表所有行,左表只回傳與右表匹配行,

3. RIGHT JOIN(右連接): 即使左表中沒有匹配,也從右表回傳所有的行
執行SQL陳述句:
SELECT
stu.ID,
stu.StudentID,
stu.StudentName,
sco.ID,
sco.Score,
sco.StudentID
FROM [BlogDemo].[dbo].[Student] stu
Right Join [BlogDemo].[dbo].[Score] sco On sco.StudentID=stu.StudentID
結果如下,查詢結果集只回傳左表所有行,右表只回傳與左表匹配行,

4. FULL JOIN(全連接): 只要其中一個表中存在匹配,就回傳行
執行SQL陳述句:
SELECT
stu.ID,
stu.StudentID,
stu.StudentName,
sco.ID,
sco.Score,
sco.StudentID
FROM [BlogDemo].[dbo].[Student] stu
FULL Join [BlogDemo].[dbo].[Score] sco On sco.StudentID=stu.StudentID
結果如下,查詢結果集回傳兩表的所有行,

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/21765.html
標籤:SQL Server
