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

歡迎訪問 生活随笔!

生活随笔

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

生活经验

(转)MySQL联表查询

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

資料源于網絡

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

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

執行后的結果是一樣的。

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

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

二.例子

假設有如下兩張表:

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

1內聯結:

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

這是隱式的內聯結,查詢的結果是:

NameHobby
TimFootball
JimmyBasketball
JimmyTennis
TomSoccer

它的作用和

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

是一樣的。

2.外左聯結

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

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

NameHobby
TimFootball
JimmyBasketball,Tennis
John?
TomSoccer

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

3.外右聯結

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

結果將會是:

NameHobby
TimFootball
JimmyBasketball
JimmyTennis
TomSoccer

三.聯表查詢中用到的一些參數

1.USING?(column_list):
其作用是為了方便書寫聯結的多對應關系,大部分情況下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在進行表的聯結的時候會先讀入左表,當使用了這個參數后MySQL將會先讀入右表,這是個MySQL的內置優化參數,大家應該在特定情況下使用,譬如已經確認右表中的記錄數量少,在篩選后能大大提高查詢速度。

轉載于:https://www.cnblogs.com/itjiandan/p/3508254.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。