日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

sql語法:inner join on, left join on, right

系統 1769 0

inner join(等值連接) 僅僅返回兩個表中聯結字段相等的行


left join(左聯接) 返回包含左表中的全部記錄和右表中聯結字段相等的記錄

right join(右聯接) 返回包含右表中的全部記錄和左表中聯結字段相等的記錄

?

INNER JOIN 語法:

?

INNER JOIN 連接兩個數據表的使用方法:


SELECT * FROM 表1 INNER JOIN 表2 ON 表1.字段號=表2.字段號

?

INNER JOIN 連接三個數據表的使用方法:


SELECT * FROM (表1 INNER JOIN 表2 ON 表1.字段號=表2.字段號) INNER JOIN 表3 ON 表1.字段號=表3.字段號

?

INNER JOIN 連接四個數據表的使用方法:


SELECT * FROM ((表1 INNER JOIN 表2 ON 表1.字段號=表2.字段號) INNER JOIN 表3 ON 表1.字段號=表3.字段號) INNER JOIN

表4 ON Member.字段號=表4.字段號

?

INNER JOIN 連接五個數據表的使用方法:


SELECT * FROM (((表1 INNER JOIN 表2 ON 表1.字段號=表2.字段號) INNER JOIN 表3 ON 表1.字段號=表3.字段號) INNER JOIN 表4 ON Member.字段號=表4.字段號) INNER JOIN 表5 ON Member.字段號=表5.字段號

?

連接六個數據表的使用方法:略,與上述聯接方法相似,大家舉一反三吧:)

?

注意事項:

在輸入字母過程中,一定要用英文半角標點符號,單詞之間留一半角空格;
在建立數據表時,假設一個表與多個表聯接,那么這一個表中的字段必須是“數字”數據類型,而多個表中的同樣字段必須是主鍵,并且是“自己主動編號”數據類型。否則,非常難聯接成功。
代碼嵌套高速方法:如,想連接五個表,則僅僅要在連接四個表的代碼上加一個前后括號(前括號加在FROM的后面,后括號加在代碼的末尾就可以),然后在后括號后面繼續加入“INNER JOIN 表名X ON 表1.字段號=表X.字段號”代碼就可以,這樣就能夠無限聯接數據表了:)

1.理論

僅僅要兩個表的公共字段有匹配值,就將這兩個表中的記錄組合起來。

個人理解:以一個共同的字段求兩個表中符合要求的交集,并將每一個表符合要求的記錄以共同的字段為牽引合并起來。

語法

select * FROM table1 INNER JOIN table2 ON table1 . field1 compopr table2 . field2

INNER JOIN 操作包括下面部分:

部分 說明
?
table1, table2 要組合當中的記錄的表的名稱。
field1,field2 要聯接的字段的名稱。假設它們不是數字,則這些字段的數據類型必須同樣,而且包括同類數據,可是,它們不必具有同樣的名稱。
compopr
?
不論什么關系比較運算符:“=”、“<”、“>”、“<=”、“>=”或者“<>”。
?????

說明

能夠在不論什么 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' 這種話 就僅僅會放回一條數據了

sql語法:inner join on, left join on, right join on具體用法


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 祁东县| 东海县| 正镶白旗| 黄骅市| 安新县| 美姑县| 玉龙| 桃江县| 龙山县| 肥西县| 福建省| 鲁山县| 鄂伦春自治旗| 北碚区| 浏阳市| 固安县| 惠来县| 河北区| 项城市| 葫芦岛市| 昭通市| 辽宁省| 连城县| 秦皇岛市| 揭阳市| 巴里| 肥乡县| 龙井市| 蒲江县| 洛浦县| 陕西省| 怀集县| 祁连县| 睢宁县| 铁力市| 台湾省| 陇川县| 桐柏县| 班玛县| 江华| 大冶市|