連表查詢
連表查詢通常分為內連線和外連線。內連線就是使用inner join進行連表查詢;而外連線又分為三種連線方式,分別是左連線(left join)、右連線(right join)、全連線(full join)。下來我們一起來看一下這幾種連線方式的區別及基礎用法。
內連線inner join
inner join將只會返回相匹配的元素項,即不會返回結果為null的資料項。如下圖所示:
inner join查詢的兩張表(a、b)的共有的部分,查詢結果為null的記錄不會出現。
外連線關鍵字outer是可選擇的,取決於具體語言,在實現上它們都是遵循標準的
left join
關鍵字從左表(a)返回所有的行,即使右表(b)中沒有匹配。如果右表中沒有匹配,則結果為null。
簡單來說就是不管右表(b)有沒有匹配到,都會完全輸出左表(a)的所有記錄,只是當右表的內容沒有匹配到時,則將右表對應的字段的內容設定為null。
當然,對查詢的sql語句稍加改動就可以實現只查詢a表中存在的記錄。比如說新增乙個右表的key為null的篩選條件。
right join
關鍵字從右表(b)返回所有的行,即使左表(a)中沒有匹配。如果左表(a)中沒有匹配,則結果為 null。
如左連線類似,不管左表(a)有沒有匹配到結果,都完全顯示右表(b)的所有記錄,將左表(a)沒有匹配到的字段值設為null。
當然,也可以進行簡單的篩選得到只有右表(b)存在的記錄,設定左表中的key是null。
full join
關鍵字只要左表(a)和右表(b)其中乙個表中存在匹配,則返回行。full outer join 關鍵字結合了 left join 和 right join 的結果。
簡單來說就是只要兩張表(a、b)中任意一張表中存在匹配,則返回記錄,當然也可以簡單的篩選得到兩表中單獨存在的記錄。比例a.key is null or b.key is null。
mysql連表查詢
mysql連表查詢 上下 select from a.mobile user where union all select from b.mobile user where 左右 mysql聯合查詢效率較高,以下例子來說明聯合查詢 內聯 左聯 右聯 全聯 的好處 t1表結構 使用者名稱,密碼 use...
mysql連表查詢
多張表無條件的聯合查詢.沒有任何意思 select a.b.from a,b 格式1 顯式的內連線 select a.b.from a inner join b on ab的連線條件格式2 隱式的內連線 select a.b.from a,b where ab的連線條件左外連線 先展示join左邊的...
mysql 連表查詢
迪卡爾積顯示結果 原始的連表查詢 mysql select from stu,teacher where stu.tid teacher.id id name tid id name info 3 二狗子 3 3 pyhui python老師 4 三狗子 4 4 pytt python爬蟲 2 ro...