1. 程式人生 > >mysql連接查詢,子查詢,聯合查詢

mysql連接查詢,子查詢,聯合查詢

mysql 應該 等於 outer 重復項 左連接 卡爾 nio round

一、連接查詢(多表查詢)

emp表

技術分享圖片

dept表

技術分享圖片

1.交叉連接

實際上,交叉連接是將兩個表不設定任何條件的連接結果。

交叉連接通常也被叫做“笛卡爾積”——數學上可能比較多。

語法:

from 表1 [cross] join 表2 ; //可見交叉連接只是沒有on條件而已。

cross這個詞也可以省略,還可以使用inner這個詞代替

技術分享圖片

2.內連接:

語法:

from 表1 [inner] join 表2 on 表1.字段1=表2.字段2;

含義:找出(過濾)在交叉連接的結果表中的表1的字段1的值等於表2的字段2的值的那些行。

技術分享圖片

3.左[外]連接:

形式:

from 表1 left [outer] join 表2 on 連接條件。

說明:

1,這裏,left是關鍵字。

2,連接條件跟內連接一樣。

3,含義是:內連接的結果基礎上,加上左邊表中所有不符合連接條件的數據,相應放右邊表的字段的位置就自動補為“null”值。

技術分享圖片

4.右[外]連接:

右連接跟左連接恰恰相反:

形式:

from 表1 right [outer] join 表2 on 連接條件。

說明:

1,這裏,right是關鍵字。

2,連接條件跟內連接一樣。

3,含義是:在內連接的結果基礎上,加上右邊表中所有不符合連接條件的數據,相應本應放左邊表的字段的位置就自動補為“null”值。

技術分享圖片

二、使用in子查詢

in的基本語法形式為:

where 操作數 in (值1,值2, ....)

則in子查詢就是:

where 操作數 in ( 列子查詢 );

含義:

表示該操作數(字段值) 等於 該子查詢的其中任意一個只,就算滿足條件。

技術分享圖片

三、聯合查詢

聯合查詢的關鍵字是: union

聯合查詢就是將兩個select語句的查詢結果“層疊”到一起成為一個“大結果”。

兩個查詢結果的能夠進行“聯合”的先覺條件是:結果字段數相等。

語法形式:

select 語句1

union [ALL | DISTINCT]

select 語句2;

說明:

1,兩個select語句的輸出段(結果字段)一樣數目一樣,應用中通常類型一樣才有意義。

2,結果集中的字段以第一個select語句的字段為準。

3,第一個select語句的字段可以做別名,但如果做別名,則後續的where,group,order等子句應該用該別名。

4,聯合查詢默認是會消除重復項的(DISTINCT),要想不消除,則必須明確些“ALL”。

5,如果要對整個聯合結果進行排序或limit,則應該對各自的select語句加括號:

(select 語句1)

union

(select 語句2)

order by ..... limit ....;

mysql連接查詢,子查詢,聯合查詢