日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

(转)MySQL联表查询

發(fā)布時間:2023/11/27 生活经验 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (转)MySQL联表查询 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

資料源于網(wǎng)絡(luò)

一.內(nèi)聯(lián)結(jié)、外聯(lián)結(jié)、左聯(lián)結(jié)、右聯(lián)結(jié)的含義及區(qū)別
在SQL標準中規(guī)劃的(Join)聯(lián)結(jié)大致分為下面四種:
1.內(nèi)聯(lián)結(jié):將兩個表中存在聯(lián)結(jié)關(guān)系的字段符合聯(lián)結(jié)關(guān)系的那些記錄形成記錄集的聯(lián)結(jié)。
2.外聯(lián)結(jié):分為外左聯(lián)結(jié)和外右聯(lián)結(jié)。
左聯(lián)結(jié)A、B表的意思就是將表A中的全部記錄和表B中聯(lián)結(jié)的字段與表A的聯(lián)結(jié)字段符合聯(lián)結(jié)條件的那些記錄形成的記錄集的聯(lián)結(jié),這里注意的是最后出來的記錄集會包括表A的全部記錄。
右聯(lián)結(jié)A、B表的結(jié)果和左聯(lián)結(jié)B、A的結(jié)果是一樣的,也就是說:

1Select A.name B.name From A Left Join B On A.id=B.id

1Select A.name B.name From B Right Join A on B.id=A.id

執(zhí)行后的結(jié)果是一樣的。

3.全聯(lián)結(jié):將兩個表中存在聯(lián)結(jié)關(guān)系的字段的所有記錄取出形成記錄集的聯(lián)結(jié)。
4.無聯(lián)結(jié):沒有使用聯(lián)結(jié)功能,也有自聯(lián)結(jié)的說法。

內(nèi)外聯(lián)結(jié)的區(qū)別是內(nèi)聯(lián)結(jié)將去除所有不符合條件的記錄,而外聯(lián)結(jié)則保留其中部分。外左聯(lián)結(jié)與外右聯(lián)結(jié)的區(qū)別在于如果用A左聯(lián)?結(jié)B則A中所有記錄都會保留在結(jié)果中,此時B中只有符合聯(lián)結(jié)條件的記錄,而右聯(lián)結(jié)相反。

二.例子

假設(shè)有如下兩張表:

表A
IDName
1Tiim
2Jimmy
3John
4Tom
表B
IDHobby
1Football
2Basketball
2Tennis
4Soccer

1內(nèi)聯(lián)結(jié):

1Select A.Name from A INNER JOIN B ON A.id = B.id

這是隱式的內(nèi)聯(lián)結(jié),查詢的結(jié)果是:

NameHobby
TimFootball
JimmyBasketball
JimmyTennis
TomSoccer

它的作用和

1Select A.Name from A INNER JOIN B ON A.id = B.id

是一樣的。

2.外左聯(lián)結(jié)

1Select A.Name from A Left JOIN B ON A.id = B.id

這樣查詢得到的結(jié)果將會是保留所有A表中聯(lián)結(jié)字段的記錄,若無與其相對應的B表中的字段記錄則留空,結(jié)果如下:

NameHobby
TimFootball
JimmyBasketball,Tennis
John?
TomSoccer

所以從上面結(jié)果看出,因為A表中的John記錄的ID沒有在B表中有對應ID,因此為空,但Name欄仍有John記錄。

3.外右聯(lián)結(jié)

1Select A.Name from A Right JOIN B ON A.id = B.id

結(jié)果將會是:

NameHobby
TimFootball
JimmyBasketball
JimmyTennis
TomSoccer

三.聯(lián)表查詢中用到的一些參數(shù)

1.USING?(column_list):
其作用是為了方便書寫聯(lián)結(jié)的多對應關(guān)系,大部分情況下USING語句可以用ON語句來代替,如下面例子:
a?LEFT?JOIN?b?USING?(c1,c2,c3),其作用相當于
a?LEFT?JOIN?b?ON?a.c1=b.c1?AND?a.c2=b.c2?AND?a.c3=b.c3

2.STRAIGHT_JOIN:
由于默認情況下MySQL在進行表的聯(lián)結(jié)的時候會先讀入左表,當使用了這個參數(shù)后MySQL將會先讀入右表,這是個MySQL的內(nèi)置優(yōu)化參數(shù),大家應該在特定情況下使用,譬如已經(jīng)確認右表中的記錄數(shù)量少,在篩選后能大大提高查詢速度。

轉(zhuǎn)載于:https://www.cnblogs.com/itjiandan/p/3508254.html

總結(jié)

以上是生活随笔為你收集整理的(转)MySQL联表查询的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。