校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > SQL語句中不同的連接JOIN及join的用法

SQL語句中不同的連接JOIN及join的用法

熱門標(biāo)簽:奧威地圖標(biāo)注多個地方 千呼電銷機(jī)器人價(jià)格 怎樣在地圖上標(biāo)注路線圖標(biāo) 智能語音外呼系統(tǒng)選哪家 京華物流公司地圖標(biāo)注 百度地圖標(biāo)注不同路線 外呼系統(tǒng)電銷專用 優(yōu)質(zhì)地圖標(biāo)注 武漢長沙外呼系統(tǒng)方法和技巧

為了從兩個表中獲取數(shù)據(jù),我們有時會用JOIN將兩個表連接起來。通常有以下幾種連接方式:

JOIN  or  INNER JOIN(內(nèi)連接) : 這兩個是相同的,要求兩邊表同時有對應(yīng)的數(shù)據(jù),返回行,任何一邊缺失數(shù)據(jù)就不顯示。

LEFT JOIN(左外連接):即使右邊的表中沒有匹配,也從左表返回所有的行。

RIGHT JOIN(右外連接):即使左邊的表中沒有匹配,也從右表返回所有的行。

FULL JOIN(全外連接):只要其中一個表中存在匹配就返回行。

如例,有g(shù)rade表(課程號sn,分?jǐn)?shù)scroe,學(xué)號id),student表(學(xué)號id,學(xué)生姓名name),要查詢學(xué)生的姓名和成績

 

當(dāng)JOIN或是INNER JOIN時,

SELECT s.name,g.sn,g.score from student as s join grade as g on s.id = g.id

或者

SELECT s.name,g.sn,g.score from student as s inner join grade as g on s.id = g.id

結(jié)果集如下

當(dāng)LEFT JOIN時,

SELECT s.name,g.sn,g.score from student as s left join grade as g on s.id = g.id

結(jié)果集如下

當(dāng)RIGHT JOIN時,

SELECT s.name,g.sn,g.score from student as s right join grade as g on s.id = g.id

結(jié)果集如下

當(dāng)FULL JOIN時,

SELECT s.name,g.sn,g.score from student as s full join grade as g on s.id = g.id

結(jié)果集如下

注意,兩個表連接時用on,在使用left join(right join或full join)時,on與where的區(qū)別是:

on條件是在生成臨時表時使用的條件,它不管on中的條件是否為真,都會返回左邊表中的記錄

where條件是在臨時表生成好后再對臨時表進(jìn)行過濾的條件,這時已經(jīng)沒有l(wèi)eft join的含義(必須返回左邊表的記錄)了,條件不為真的就全部過濾掉。如下圖,

on條件為黃色部分

SELECT s.name,g.sn,g.score from student as s left join grade as g on s.id = g.id and score =90


SELECT s.name,g.sn,g.score from student as s left join grade as g on s.id = g.id where score =90

下面看下SQL中join的各種用法

1.自然連接(natural join)

自然連接將表中具有相同名稱的列自動進(jìn)行匹配,自然連接不必指定任何同等連接條件也不能認(rèn)為指定哪些列需要被匹配,自然連接得到的結(jié)果表中,兩表中名稱相同的列只出現(xiàn)一次。

select * from employee natural join department;

2.內(nèi)連接(inner join):產(chǎn)生的結(jié)果是A和B的交集(相同列里面的相同值)

內(nèi)連接查詢能將左表和右表中能關(guān)聯(lián)起來的數(shù)據(jù)連接后返回,返回的結(jié)果就是兩個表中所有相匹配的數(shù)據(jù)。

select * from TableA as A inner join TableB B on A.PK = B.PK;
select * from TableA as A inner join TableB B on A.PK > B.PK;



3.外連接(outer join)

內(nèi)連接是要顯示兩張表的內(nèi)存,而外連接不要求如此,外連接可以依據(jù)連接表保留左表,右表或全部表的行為而分為左外連接右外連接和全連接。

select * from TableA as A left(right/full) join TableB as B on A.PA = B.PK;

Full Join:產(chǎn)生的結(jié)果是A和B的并集(如果沒有相同的值會用null作為值)


Left Join:產(chǎn)生表A的完全集,而B表中匹配的則有值(沒有匹配的則以null值取代)



Right Join:產(chǎn)生表B的完全集,而A表中匹配的則有值(沒有匹配的則以null值取代)


4.交叉連接(cross join)

又稱笛卡爾連接,交叉連接返回兩個集合的笛卡爾積。

select * from TableA cross join TableB;

參考鏈接:http://mazhuang.org/2017/09/11/joins-in-sql/

總結(jié)

以上所述是小編給大家介紹的SQL語句中不同的連接join及join的用法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

您可能感興趣的文章:
  • Mysql inner join on的用法實(shí)例(必看)
  • SQL中JOIN和UNION區(qū)別、用法及示例介紹
  • MySQL JOIN之完全用法
  • sql join on 用法
  • 超詳細(xì)mysql left join,right join,inner join用法分析
  • 非常詳細(xì)的SQL--JOIN之完全用法

標(biāo)簽:威海 七臺河 防疫戰(zhàn)設(shè) 天水 銅仁 益陽 宿州 來賓

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQL語句中不同的連接JOIN及join的用法》,本文關(guān)鍵詞  SQL,語句,中,不同,的,連接,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《SQL語句中不同的連接JOIN及join的用法》相關(guān)的同類信息!
  • 本頁收集關(guān)于SQL語句中不同的連接JOIN及join的用法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 深州市| 望都县| 玛沁县| 宝坻区| 梁山县| 赤壁市| 皋兰县| 神农架林区| 尚志市| 连江县| 安阳市| 海伦市| 资阳市| 武定县| 普兰县| 贡嘎县| 德庆县| 岳阳市| 土默特左旗| 五指山市| 海城市| 万荣县| 临洮县| 洪雅县| 霍山县| 巴南区| 布尔津县| 双峰县| 乌苏市| 筠连县| 盐源县| 盈江县| 扶风县| 灵川县| 武冈市| 邵阳市| 法库县| 边坝县| 界首市| 南和县| 务川|