自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MySQL left join, right join的區(qū)別

數(shù)據(jù)庫 MySQL
我們今天主要向大家描述的是MySQL left join, right join, 以及inner join的實際用法的分析,主要描述的是其不同之處。

以下的文章主要是對MySQL left join, right join, 以及inner join的實際用法的分析(主要介紹的是不同之處)的詳細解析以下的文章主要是對以實例演示的形式來對其實際操作進行說明,以下就是文章的詳細內(nèi)容描述。

 

下面是例子分析

 

表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

 

創(chuàng)建這兩個表SQL語句如下:

 

 

  1. CREATE TABLE a  
  2. aID int( 1 ) AUTO_INCREMENT PRIMARY KEY ,  
  3. aNum char( 20 )  
  4. )  
  5. CREATE TABLE b(  
  6. bID int( 1 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,  
  7. bName char( 20 )  
  8. )  
  9. INSERT INTO a  
  10. VALUES ( 1, ‘a20050111′ ) , ( 2, ‘a20050112′ ) , ( 3, ‘a20050113′ ) , ( 4, ‘a20050114′ ) , ( 5, ‘a20050115′ ) ;  
  11. INSERT INTO b  
  12. VALUES ( 1, ‘ 2006032401′ ) , ( 2, ‘2006032402′ ) , ( 3, ‘2006032403′ ) , ( 4, ‘2006032404′ ) , ( 8, ‘2006032408′ ) ; 

實驗如下:

1.MySQL left join(左聯(lián)接)

 

sql語句如下:

 

SELECT * FROM a

 

LEFT JOIN b

 

ON a.aID =b.bID

 

結(jié)果如下:

 

aID aNum bID bName

 

1 a20050111 1 2006032401

 

2 a20050112 2 2006032402

 

3 a20050113 3 2006032403

 

4 a20050114 4 2006032404

 

5 a20050115 NULL NULL

 

(所影響的行數(shù)為 5 行)

 

結(jié)果說明:

 

MySQL left join是以A表的記錄為基礎的,A可以看成左表,B可以看成右表,left join是以左表為準的.

 

換句話說,左表(A)的記錄將會全部表示出來,而右表(B)只會顯示符合搜索條件的記錄(例子中為: A.aID = B.bID).

 

B表記錄不足的地方均為NULL.

 

2.right join(右聯(lián)接)

 

sql語句如下:

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

結(jié)果如下:

aID aNum bID bName

 

1 a20050111 1 2006032401

 

2 a20050112 2 2006032402

 

3 a20050113 3 2006032403

 

4 a20050114 4 2006032404

 

NULL NULL 8 2006032408

 

(所影響的行數(shù)為 5 行)

 

結(jié)果說明:

 

仔細觀察一下,就會發(fā)現(xiàn),和MySQL left join的結(jié)果剛好相反,這次是以右表(B)為基礎的,A表不足的地方用NULL填充.

 

3.inner join(相等聯(lián)接或內(nèi)聯(lián)接)

 

sql語句如下:

 

SELECT * FROM a

 

INNER JOIN b

 

ON a.aID =b.bID

 

等同于以下SQL句:

 

SELECT *

 

FROM a,b

 

WHERE a.aID = b.bID

 

結(jié)果如下:

 

aID aNum bID bName

 

1 a20050111 1 2006032401

 

2 a20050112 2 2006032402

 

3 a20050113 3 2006032403

 

4 a20050114 4 2006032404

 

結(jié)果說明:

 

很明顯,這里只顯示出了 A.aID = B.bID的記錄.這說明inner join并不以誰為基礎,它只顯示符合條件的記錄.

 

MySQL LEFT JOIN操作用于在任何的 FROM 子句中,

 

組合來源表的記錄。使用 LEFT JOIN 運算來創(chuàng)建一個左邊外部聯(lián)接。左邊外部聯(lián)接將包含了從第一個(左邊)開始的兩個表中的全部記錄,即

 

使在第二個(右邊)表中并沒有相符值的記錄。

 

語法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2

 

說明:table1, table2參數(shù)用于指定要將記錄組合的表的名稱。

 

field1, field2參數(shù)指定被聯(lián)接的字段的名稱。且這些字段必須有相同的數(shù)據(jù)類型及包含相同類型的數(shù)據(jù),但它們不需要有相同的

 

名稱。

 

compopr參數(shù)指定關系比較運算符:”=”, “<”, “>”, “<=”, “>=” 或 “<>”。

 

如果在INNER JOIN操作中要聯(lián)接包含Memo 數(shù)據(jù)類型或 OLE Object 數(shù)據(jù)類型數(shù)據(jù)的字段,將會發(fā)生錯誤。

 

 

 【編輯推薦】

  1. MySQL 4.1 數(shù)據(jù)轉(zhuǎn)換的指導
  2. 配置MySQL與卸載MySQL實操
  3. MySQL 修改密碼的6個好用方案
  4. MySQL數(shù)據(jù)庫訪問妙招在Linux之下
  5. 從MySQL數(shù)據(jù)庫表中來檢索數(shù)據(jù)并不難

 

責任編輯:佚名 來源: 博客園
相關推薦

2025-01-15 08:05:06

MySQLLEFT JOIN數(shù)據(jù)庫

2009-09-16 17:07:00

linq實現(xiàn)Left

2010-05-21 14:36:00

MySQL left

2018-04-13 10:38:49

數(shù)據(jù)庫SQLJoin

2010-05-18 14:14:03

MySQL關聯(lián)left

2010-04-21 17:51:36

Oracle左連接

2023-10-24 15:29:54

MySQL

2010-05-05 10:32:06

Oracle左連接le

2022-01-26 22:14:59

HiveSQLSQL腳本

2024-01-09 09:46:13

數(shù)據(jù)庫MySQL

2020-03-05 11:10:18

Left join數(shù)據(jù)庫MySQL

2021-08-11 21:46:47

MySQL索引join

2018-04-03 15:20:07

數(shù)據(jù)庫MySQLjoin連接

2020-11-12 07:49:18

MySQL

2024-10-05 00:00:10

SQL語句指定連接條

2022-09-14 08:01:36

JoinMySQL迭代器

2017-08-31 14:57:53

數(shù)據(jù)庫MySQLJOIN

2023-10-08 08:53:36

數(shù)據(jù)庫MySQL算法

2024-03-15 08:06:58

MySQLJOIN命令

2009-04-02 10:23:13

實現(xiàn)JoinMySQL
點贊
收藏

51CTO技術(shù)棧公眾號