SQL 多表銜接查詢完成語句。本站提示廣大學習愛好者:(SQL 多表銜接查詢完成語句)文章只能為提供參考,不一定能成為您想要的結果。以下是SQL 多表銜接查詢完成語句正文
只需兩個表的公共字段有婚配值,就將這兩個表中的記載組合起來。
小我懂得:以一個配合的字段求兩個表中相符請求的交集,並將每一個表相符請求的記載以配合的字段為牽引歸並起來。
語法
select * FROM table1 INNER JOIN table2 ON table1 . field1 compopr table2 . field2
INNER JOIN 操作包括以下部門:
部門 解釋解釋
可以在任何 FROM 子句中應用 INNER JOIN 操作。這是最經常使用的聯接類型。只需兩個表的公共字段上存在相婚配的值,Inner 聯接就會組合這些表中的記載。
可以將 INNER JOIN 用於 Departments 及 Employees 表,以選擇出每一個部分的一切雇員。而要選擇一切部門(即便某些部分中並沒有被分派雇員)或許一切雇員(即便某些雇員沒有分派就任何部分),則可以經由過程 LEFT JOIN 或許 RIGHT JOIN 操作來創立內部聯接。
假如試圖聯接包括備注或 OLE 對象數據的字段,將產生毛病。
可以聯接任何兩個類似類型的數字字段。例如,可以聯接主動編號和長整型字段,由於它們均是類似類型。但是,不克不及聯接單精度型和雙精度型類型字段。
下例展現了若何經由過程 CategoryID 字段聯接 Categories 和 Products 表:
SELECT CategoryName, ProductName
FROM Categories INNER JOIN Products
ON Categories.CategoryID = Products.CategoryID;
在後面的示例中,CategoryID 是被聯接字段,然則它不包括在查詢輸入中,由於它不包括在 SELECT 語句中。若要包括被聯接字段,請在 SELECT 語句中包括該字段名,在本例中是指 Categories.CategoryID。
也能夠在 JOIN 語句中鏈接多個 ON 子句,請應用以下語法:
SELECT fields
FROM table1 INNER JOIN table2
ON table1.field1 compopr table2.field1 AND
ON table1.field2 compopr table2.field2 OR
ON table1.field3 compopr table2.field3;
也能夠經由過程以下語法嵌套 JOIN 語句:
SELECT fields
FROM table1 INNER JOIN
(table2 INNER JOIN [( ]table3
[INNER JOIN [( ]tablex [INNER JOIN ...)]
ON table3.field3 compopr tablex.fieldx)]
ON table2.field2 compopr table3.field3)
ON table1.field1 compopr table2.field2;
LEFT JOIN 或 RIGHT JOIN 可以嵌套在 INNER JOIN 當中,然則 INNER JOIN 不克不及嵌套於 LEFT JOIN 或 RIGHT JOIN 當中。
2.操作實例
表A記載以下:
aID aNum
1 a20050111
2 a20050112
3 a20050113
4 a20050114
5 a20050115
表B記載以下:
bID bName
1 2006032401
2 2006032402
3 2006032403
4 2006032404
8 2006032408
試驗以下:
1.left join
sql語句以下:
select * from A
left join B
on A.aID = B.bID
成果以下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
5 a20050115 NULL NULL
(所影響的行數為 5 行)
成果解釋:
left join是以A表的記載為基本的,A可以算作左表,B可以算作右表,left join是以左表為准的.
換句話說,左表(A)的記載將會全體表現出來,而右表(B)只會顯示相符搜刮前提的記載(例子中為: A.aID = B.bID).
B表記載缺乏的處所均為NULL.
2.right join
sql語句以下:
select * from A
right join B
on A.aID = B.bID
成果以下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
NULL NULL 8 2006032408
(所影響的行數為 5 行)
成果解釋:
細心不雅察一下,就會發明,和left join的成果恰好相反,此次是以右表(B)為基本的,A表缺乏的處所用NULL填充.
3.inner join
sql語句以下:
select * from A
innerjoin B
on A.aID = B.bID
成果以下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
成果解釋:
很顯著,這裡只顯示出了 A.aID = B.bID的記載.這解釋inner join其實不以誰為基本,它只顯示相符前提的記載. 還有就是inner join 可以聯合where語句來應用 如: select * from A innerjoin B on A.aID = B.bID where b.bname='2006032401' 如許的話 就只會放回一條數據了
小我總結:將多張表裝置以上三種規矩銜接成一張表