軟件 聊天 安全 視頻 瀏覽器 下載 系統 辦公 教學 輸入法
免費 域名 空間 相冊 郵箱 資源 網賺 試用 優惠 工具
教程 設計 三維 學院 辦公 網頁
素材 PSD 矢量 網頁 PPT 動畫
美女 唯美 大生活 美圖 風景 時尚藝
資訊 新聞 專題 熱點
您的位置: 廣信之家 > 網絡學院 > 建站資訊 > 文章正文

詳細講解MySql語句inner join,left join,right join的用法并分析

時間:10-27 02:20 來源:廣信之家 整理:廣信小編 我要評論(0)
字號:T|T
內容提要:
  廣信之家在這里來幫大家了解MySql語句inner join,left join,right join的用法并詳細講解,1.left join(左聯接) 2.right join(右聯接) 3.inner join(相等聯接或內聯接),下面是例子分析這三個的用法。

廣信之家在這里來幫大家了解MySql語句inner join,left join,right join的用法并詳細講解,下面是例子分析。

A表記錄如下:

+--------------+
| aID aNum
| 1 a20050111
| 2 a20050112
| 3 a20050113
| 4 a20050114
| 5 a20050115
+--------------+

B表記錄如下:

+--------------+
| bID bName
| 1 2006032401
| 2 2006032402
| 3 2006032403
| 4 2006032404
| 8 2006032408
+--------------+

創建這兩個表SQL語句如下:

CREATE TABLE a(
aID int( 1 ) AUTO_INCREMENT PRIMARY KEY ,
aNum char( 20 )
)
CREATE TABLE b(
bID int( 1 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
bName char( 20 )
)
INSERT INTO a
VALUES ( 1, 'a20050111' ) , ( 2, 'a20050112' ) , ( 3, 'a20050113' ) , ( 4, 'a20050114' ) , ( 5, 'a20050115' ) ;
INSERT INTO b
VALUES ( 1, ' 2006032401' ) , ( 2, '2006032402' ) , ( 3, '2006032403' ) , ( 4, '2006032404' ) , ( 8, '2006032408' ) ;

實驗如下:

1.left join(左聯接)
sql語句如下:

SELECT * FROM a
LEFT JOIN b
ON a.aID =b.bID

結果如下:

+-------------------------+
| aID aNum bID bName
| 1 a20050111 1 2006032401
| 2 a20050112 2 2006032402
| 3 a20050113 3 2006032403
| 4 a20050114 4 2006032404
| 5 a20050115 NULL NULL
+-------------------------+

(所影響的行數為 5 行)

結果說明:
left join是以A表的記錄為基礎的,A可以看成左表,B可以看成右表,left join是以左表為準的.
換句話說,左表(A)的記錄將會全部表示出來,而右表(B)只會顯示符合搜索條件的記錄(例子中為: A.aID = B.bID).
B表記錄不足的地方均為NULL.

2.right join(右聯接)
sql語句如下:

SELECT * FROM a
RIGHT JOING b
ON a.aID = b.bID

結果如下:

+-------------------------+
| aID aNum bID bName
| 1 a20050111 1 2006032401
| 2 a20050112 2 2006032402
| 3 a20050113 3 2006032403
| 4 a20050114 4 2006032404
| NULL NULL 8 2006032408
+-------------------------+

(所影響的行數為 5 行)

結果說明:
仔細觀察一下,就會發現,和left join的結果剛好相反,這次是以右表(B)為基礎的,A表不足的地方用NULL填充.

3.inner join(相等聯接或內聯接)
sql語句如下:

SELECT * FROM a
INNER JOIN b
ON a.aID =b.bID
等同于以下SQL句:
SELECT *
FROM a,b
WHERE a.aID = b.bID

結果如下:

+-------------------------+
| aID aNum bID bName
| 1 a20050111 1 2006032401
| 2 a20050112 2 2006032402
| 3 a20050113 3 2006032403
| 4 a20050114 4 2006032404
+-------------------------+

結果說明:
很明顯,這里只顯示出了 A.aID = B.bID的記錄.這說明inner join并不以誰為基礎,它只顯示符合條件的記錄.
LEFT JOIN操作用于在任何的 FROM 子句中,組合來源表的記錄。使用 LEFT JOIN 運算來創建一個左邊外部聯接。左邊外部聯接將包含了從第一個(左邊)開始的兩個表中的全部記錄,即使在第二個(右邊)表中并沒有相符值的記錄。

語法:

FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2

說明:table1, table2參數用于指定要將記錄組合的表的名稱。
field1, field2參數指定被聯接的字段的名稱。且這些字段必須有相同的數據類型及包含相同類型的數據,但它們不需要有相同的名稱。
compopr參數指定關系比較運算符:"=", "<", ">", "<=", ">=" 或 "<>"。

如果在INNER JOIN操作中要聯接包含Memo 數據類型或 OLE Object 數據類型數據的字段,將會發生錯誤。

通過以上的詳細講解與分析實例,希望廣信之家真的幫助到大家了解MySql語句inner join,left join,right join的具體用法。

    相關閱讀:

    頂一下
    (0)
    0%
    踩一下
    (0)
    0%
    免責申明:以上內容僅代表原創者觀點,其內容未經本站證實,詳細講解MySql語句inner join,left join,right join的用法并分析對以上內容的真實性、完整性不作任何保證或承諾,轉載目的在于傳遞更多信息,由此產生的后果與詳細講解MySql語句inner join,left join,right join的用法并分析無關;如以上轉載內容不慎侵犯了您的權益,請聯系我們將會及時處理。
    [責任編輯:廣信小編]

    精彩圖文

    登錄 (請登錄發言,并遵守 相關規定)
    如果你對廣信之家有任何意見或建議,請到交流平臺反饋。到留言板反饋
    神龙宝石送彩金