首頁 >資料庫 >mysql教程 >mysql常用基礎操作語法(八)~~多表查詢合併結果及內連接查詢【指令列模式】

mysql常用基礎操作語法(八)~~多表查詢合併結果及內連接查詢【指令列模式】

黄舟
黄舟原創
2017-03-03 14:17:281587瀏覽

1、使用union和union all合併兩個查詢結果:select 欄位名稱from tablename1 union select 欄位名稱from tablename2;


注意這個動作必須保證兩張表格欄位相同,欄位資料類型也相同。另外,使用union的時候會移除重複(相同)的記錄,而union all則不會。

註:下邊的幾個連接查詢涉及到笛卡爾積的概念,即如果存在兩張表,第一張記錄數為n條,另一張表的記錄數為m條,那麼笛卡爾積得出的記錄數就是n*m條;如果第一張表的字段數為a個,另一張的字段數為b個,則笛卡爾積得出的字段數就是a+b個。

2、使用natural join自然連接:前提是兩張表格有相同的欄位:(這個操作會去掉重複的欄位)


對於這個查詢,我的理解是:保留這兩張表中關聯字段(例如這裡的depart_id)都存在的數據,去掉只有一個表中有的:


如上述內容中,company中有四條數據,而emp中有7條,結果不論哪個放前邊都只出來六條,因為company中depart_id為4的,emp中沒有,而emp中depart_id為5的,company中又沒有。

3、inner join on等值連接查詢:


#這個操作在我理解,和上邊的自然連結差異就在於沒有去掉重複的字段,還有更加的靈活,不需要有相同字段名的字段:


#4、inner join on不等值連接查詢:


對於這個查詢,我的理解就是,他是「=」查詢的補集,即這個查詢的結果集= 笛卡爾積結果集 減去“ =」查詢的結果集;本例中,company有4筆記錄,emp有7筆記錄,笛卡兒積是4*7=28筆記錄;「=」查詢的結果是6筆記錄,一次"!= "查詢就應該是其餘的22筆記錄。

5、從上邊的操作中可以拓展出另一種查詢:字連接查詢,即實際只有一張表,用重命名的方式當成兩張來用:


#可以看到,根據笛卡兒積,這裡應該有4*4=16個結果,但是因為有了條件,就篩選出了四條。

 以上就是mysql常用基礎操作語法(八)~~多表查詢合併結果和內連接查詢【命令列模式】的內容,更多相關內容請關注PHP中文網(www.php.cn )!


#
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn