国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

SQL 多表聯(lián)合查詢(xún)的幾種方式詳解

瀏覽:122日期:2023-03-06 14:25:46
目錄
  • 前言
  • 正文
  • 內(nèi)連接
  • 等值連接/相等連接
  • 自然連接
  • 自連接
  • 外連接
  • 左外連接
  • 右外連接
  • 全外連接/完全外連接
  • 交叉連接/笛卡爾積
  • 總結(jié)

前言

連接查詢(xún)是關(guān)系數(shù)據(jù)中最主要的查詢(xún),包括內(nèi)連接、外連接等。通過(guò)連接運(yùn)算符可以實(shí)現(xiàn)多個(gè)表查詢(xún)。

正文

連接查詢(xún)主要分為三種:內(nèi)連接、外連接、交叉連接。

內(nèi)連接

使用比較運(yùn)算符(包括=><<>>=<=!>!<)進(jìn)行表間的比較操作,查詢(xún)與連接條件相匹配的數(shù)據(jù)。根據(jù)所使用的比較方式不同,內(nèi)連接分為等值連接、自然連接和自連接三種。

關(guān)鍵字 INNER JOIN

等值連接/相等連接

使用”=”關(guān)系將表連接起來(lái)的查詢(xún),其查詢(xún)結(jié)果中列出被連接表中的所有列,包括其中的重復(fù)列

SELECT    PM_ACT_JOB_RLS.*, PM_ACT_RLS.*FROM    PM_ACT_JOB_RLSINNER JOIN PM_ACT_RLS ON PM_ACT_JOB_RLS.RlsPK = PM_ACT_RLS.RlsPK

自然連接

等值連接中去掉重復(fù)的列,形成的連接

SELECT    PM_ACT_JOB_RLS.JobPK,    PM_ACT_RLS.RlsPK,    RlsNameFROM    PM_ACT_JOB_RLSINNER JOIN PM_ACT_RLS ON PM_ACT_JOB_RLS.RlsPK = PM_ACT_RLS.RlsPK

自連接

如果在一個(gè)連接查詢(xún)中,設(shè)計(jì)到的兩個(gè)表都是同一個(gè)表,這種查詢(xún)稱(chēng)為自連接查詢(xún)。

--c1、c2邏輯上是兩張表,物理上是一張表SELECT    c1.CategoryID,    c1.CategoryNameFROM    [dbo].[Category] c1INNER JOIN [dbo].[Category] c2 ON c1.[CategoryID] = c2.[ParentID]

外連接

內(nèi)連接只返回滿(mǎn)足連接條件的數(shù)據(jù)行,外連接不只列出與連接條件相匹配的行,而是列出左表(左外連接時(shí))、右表(右外連接時(shí))或兩個(gè)表(全外連接時(shí))中所有符合搜索條件的數(shù)據(jù)行。外連接分為左外連接、右外鏈接、全外連接三種。

左外連接

返回左表中的所有行,如果左表中行在右表中沒(méi)有匹配行,則在相關(guān)聯(lián)的結(jié)果集中右表的所選擇字段均為NULL

關(guān)鍵字 LEFT [OUTER] JOIN

--左外連接  --1679條數(shù)據(jù)SELECT    me.*,    mo.*FROM    MM_LOTS_EXT AS meLEFT OUTER JOIN MM_LOT_OPERATIONS AS mo ON me.LotID = mo.SerialNumber

注意:

left join中關(guān)于where和on條件的幾個(gè)知識(shí)點(diǎn):

  • 多表left join是會(huì)生成一張臨時(shí)表,并返回給用戶(hù)
  • where條件是針對(duì)最后生成的這張臨時(shí)表進(jìn)行過(guò)濾,過(guò)濾掉不符合where條件的記錄
  • on條件是對(duì)left join的右表進(jìn)行條件過(guò)濾,但依然返回左表的所有行,右表中沒(méi)有的補(bǔ)為NULL
  • on條件中如果有對(duì)左表的限制條件,無(wú)論條件真假,依然返回左表的所有行,但是會(huì)影響右表的匹配值。也就是說(shuō)on中左表的限制條件只影響右表的匹配內(nèi)容,不影響返回行數(shù)

實(shí)例:

SELECT g.*,f.* FROM groups g LEFT JOIN factor f ON f.groupId = g.id and f.isDel=0 where g.isDel=0

結(jié)論:

1.對(duì)左表添加條件限制需在where條件中添加,不能放到on后面
2.對(duì)右表添加條件限制需放到on后面,在where條件中添加會(huì)有數(shù)據(jù)行數(shù)差異出現(xiàn)問(wèn)題。

右外連接

返回右表中的所有行,如果右表中行在左表中沒(méi)有匹配行,則在左表中相關(guān)字段返回NULL值。

關(guān)鍵字 RIGHT [OUTER] JOIN

--右外連接  --209條數(shù)據(jù)SELECT    me.*,    mo.*FROM    MM_LOTS_EXT AS meRIGHT OUTER JOIN MM_LOT_OPERATIONS AS mo ON me.LotID = mo.SerialNumber

全外連接/完全外連接

返回兩個(gè)連接中所有的記錄數(shù)據(jù),是左外連接和右外連接的并集。

關(guān)鍵字 FULL [OUTER] JOIN

--全外連接  --1816條數(shù)據(jù) SELECT    me.*,    mo.*FROM    MM_LOTS_EXT AS meFULL OUTER JOIN MM_LOT_OPERATIONS AS mo ON me.LotID = mo.SerialNumber

交叉連接/笛卡爾積

兩個(gè)表做笛卡爾積,得到的結(jié)果集的行數(shù)是兩個(gè)表的行數(shù)的乘積。

關(guān)鍵字 CROSS JOIN

--笛卡爾積 (cross join后加條件只能用where,不能用on)  --45條數(shù)據(jù)(9*5)SELECT    *FROM    PM_ACT_JOB_RLSCROSS JOIN PM_ACT_RLS

注意:帶有where條件的子句,往往會(huì)先生成兩個(gè)表行數(shù)乘積的數(shù)據(jù)表,然后從根據(jù)where條件從中選擇。

當(dāng)數(shù)據(jù)量比價(jià)大的時(shí)候,笛卡爾積操作會(huì)很消耗數(shù)據(jù)庫(kù)的性能

總結(jié)

連接查詢(xún)是關(guān)系型數(shù)據(jù)庫(kù)中的一個(gè)重要標(biāo)志,這次和大家一起復(fù)習(xí)多表查詢(xún)的幾種操作,希望給您帶來(lái)幫助!

到此這篇關(guān)于SQL 多表聯(lián)合查詢(xún)的幾種方式的文章就介紹到這了,更多相關(guān)SQL 多表聯(lián)合查詢(xún)內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: MsSQL
主站蜘蛛池模板: 一级免费看片 | 国产三级精品久久三级国专区 | 又黄又爽视频好爽视频 | 九九热视频精品在线观看 | 欧美黄色免费 | 一级一级一片免费高清 | 精品国产v无码大片在线观看 | 久久精品国产99国产精品 | 亚洲国产一区二区三区四区五区 | 欧美特一级| 国内成人精品视频 | 久久精品免费观看视频 | 成年美女黄网站小视频 | 欧美一级毛片片aa视频 | 色天天躁夜夜躁天干天干 | 亚洲www色 | 乱子伦农村xxxx视频 | 高清一区二区 | 日韩国产午夜一区二区三区 | 久久一日本道色综合久 | 日韩精品久久久毛片一区二区 | 成人综合在线观看 | 美女视频在线观看黄 | 国产91精品一区 | 日韩三级小视频 | 亚洲爆爽 | 免费一级毛片在线播放视频 | 成人久久18免费网站游戏 | 亚洲欧美成人网 | 成人免费视频网站 | 99视频国产在线 | 99精品免费观看 | 国产精品综合一区二区三区 | 中文字幕日韩一区二区 | 国产成人一区二区视频在线观看 | 精品91一区二区三区 | 免费一级在线 | 成人五级毛片免费播放 | 欧美人在线一区二区三区 | 国产欧美一区二区精品性色 | 国产精品午夜免费观看网站 |