用了那么久連接的查詢方式,突然發現都習慣性的使用左連接,而不怎么用到有連接。那么這兩種方式有什么差別呢?
以mysql為例,創建兩張表表使用不同的連接方式查詢:
准備:
CREATE TABLE `a_table` ( `a_id` int(11) DEFAULT NULL, `a_name` varchar(10) DEFAULT NULL, `a_part` varchar(10) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `b_table` ( `b_id` int(11) DEFAULT NULL, `b_name` varchar(10) DEFAULT NULL, `b_part` varchar(10) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8
測試數據:
一、左連接(左外連接)
關鍵字:left join on / left outer join on
語句:select * from a_table a left join b_table b on a.a_id = b.b_id;

說明:
left join 是left outer join的簡寫,它的全稱是左外連接,是外連接中的一種。
左(外)連接,左表(a_table)的記錄將會全部表示出來,而右表(b_table)只會顯示符合搜索條件的記錄。右表記錄不足的地方均為NULL。

二、右連接(右外連接)
關鍵字:right join on / right outer join on
語句:select * from a_table a right outer join b_table b on a.a_id = b.b_id;

說明:
right join是right outer join的簡寫,它的全稱是右外連接,是外連接中的一種。
與左(外)連接相反,右(外)連接,左表(a_table)只會顯示符合搜索條件的記錄,而右表(b_table)的記錄將會全部表示出來。左表記錄不足的地方均為NULL。

補充:
三、內連接
關鍵字:inner join on
語句:select * from a_table a inner join b_table b on a.a_id = b.b_id;

說明:組合兩個表中的記錄,返回關聯字段相符的記錄,也就是返回兩個表的交集(陰影)部分。
四、全連接(全外連接)
MySQL目前不支持此種方式,可以用其他方式替代解決。