這篇文章主要介紹“sql join on的使用方法”,在日常操作中,相信很多人在sql join on的使用方法問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”sql join on的使用方法”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
創(chuàng)新互聯(lián)公司專(zhuān)注于西充網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供西充營(yíng)銷(xiāo)型網(wǎng)站建設(shè),西充網(wǎng)站制作、西充網(wǎng)頁(yè)設(shè)計(jì)、西充網(wǎng)站官網(wǎng)定制、微信小程序開(kāi)發(fā)服務(wù),打造西充網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供西充網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。
A left join B 的連接的記錄數(shù)與A表的記錄數(shù)同
A right join B 的連接的記錄數(shù)與B表的記錄數(shù)同
A left join B 等價(jià)B right join A
table A: Field_K, Field_A 1 a 3 b 4 c
table B: Field_K, Field_B 1 x 2 y 4 z
select a.Field_K, a.Field_A, b.Field_K, b.Field_B from a left join b on a.Field_K=b.Field_K
Field_K Field_A Field_K Field_B ---------- ---------- ---------- ---------- 1 a 1 x 3 b NULL NULL 4 c 4 z
也就是說(shuō)left join 則連接左邊表中所有記錄都會(huì)出現(xiàn),如果根據(jù)連接條件在table2中找不到相關(guān)記錄,則顯示為null。
right join 則顯示右邊表中的全部記錄。inner join 則只有符合條件的記錄才會(huì)出現(xiàn)在結(jié)果集中。EG2∶有兩表a和b,前兩字段完全相同:(id int,name varchar(10)...)
id name
----------- ----------
1 a
2 b
3 c
以下的查詢(xún)語(yǔ)句,你知道它的運(yùn)行結(jié)果嗎?:
1.
select * from a left join b on a.id=b.id where a.id=1
2.
select * from a left join b on a.id=b.id and a.id=1
3.
select * from a left join b on a.id=b.id and b.id=1
4.
select * from a left join b on a.id=1
結(jié)果:
id name id name
----------- ----------- ----------- -----------
1 10 1 10(1 row(s) affected)
id name id name
----------- ----------- ----------- -----------
1 10 1 10
2 20 NULL NULL
3 30 NULL NULL(3 row(s) affected)
id name id name
----------- ----------- ----------- -----------
1 10 1 10
2 20 NULL NULL
3 30 NULL NULL(3 row(s) affected)
id name id name
----------- ----------- ----------- -----------
1 10 1 10
1 10 2 20
1 10 3 30
2 20 NULL NULL
3 30 NULL NULL(5 row(s) affected)
思路:
left join , 無(wú)非是左邊表為基礎(chǔ), 掃描右邊表匹配的記錄先是左邊表的第1條記錄
1 a
按條件 a.id=1, 來(lái)掃描右邊表的記錄
對(duì)于右邊表的每條記錄, 顯然 a.id=1 這個(gè)條件都是成立的, 所以第1條記錄匹配后的結(jié)果是:1 a 1 a
1 a 2 b
1 a 3 c---------------------------------------------
然后再掃描第2條記錄
2 b
對(duì)于條件 a.id=1, 在邊表中沒(méi)有與之匹配的記錄, 所以右邊表為NULL
因此第2條記錄匹配的結(jié)果為
2 b NULL NULL----------------------------------------------
第3條記錄與第2條記錄一樣, 匹配的結(jié)果是
3 c NULL NULL---------------------------------------
因此最終結(jié)果是5條記錄
1 a 1 a
1 a 2 b
1 a 3 c
2 b null null
3 c null null
內(nèi)聯(lián)接(典型的聯(lián)接運(yùn)算,使用像 = 或 <> 之類(lèi)的比較運(yùn)算符)。包括相等聯(lián)接和自然聯(lián)接。
內(nèi)聯(lián)接使用比較運(yùn)算符根據(jù)每個(gè)表共有的列的值匹配兩個(gè)表中的行。例如,檢索 students 和 courses 表中學(xué)生標(biāo)識(shí)號(hào)相同的所有行。外聯(lián)接,外聯(lián)接可以是左向外聯(lián)接、右向外聯(lián)接或完整外部聯(lián)接。
在 FROM 子句中指定外聯(lián)接時(shí),可以由下列幾組關(guān)鍵字中的一組指定:LEFT JOIN 或 LEFT OUTER JOIN。
左向外聯(lián)接的結(jié)果集包括 LEFT OUTER 子句中指定的左表的所有行,而不僅僅是聯(lián)接列所匹配的行。如果左表的某行在右表中沒(méi)有匹配行,則在相關(guān)聯(lián)的結(jié)果集行中右表的所有選擇列表列均為空值。RIGHT JOIN 或 RIGHT OUTER JOIN。
右向外聯(lián)接是左向外聯(lián)接的反向聯(lián)接。將返回右表的所有行。如果右表的某行在左表中沒(méi)有匹配行,則將為左表返回空值。FULL JOIN 或 FULL OUTER JOIN。
完整外部聯(lián)接返回左表和右表中的所有行。當(dāng)某行在另一個(gè)表中沒(méi)有匹配行時(shí),則另一個(gè)表的選擇列表列包含空值。如果表之間有匹配行,則整個(gè)結(jié)果集行包含基表的數(shù)據(jù)值。交叉聯(lián)接。
交叉聯(lián)接返回左表中的所有行,左表中的每一行與右表中的所有行組合。交叉聯(lián)接也稱(chēng)作笛卡爾積。
到此,關(guān)于“sql join on的使用方法”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!