一、內連線查詢 inner join
關鍵字:inner join on
語句:select * from a_table a inner join b_table b on a.a_id = b.b_id;
說明:組合兩個表中的記錄,返回關聯字段相符的記錄,也就是返回兩個表的交集(陰影)部分。
案例解釋:在boy表和girl 表中查出兩表 hid 字段一致的姓名(gname,bname),boy表和girl 表如下:
採用內連線查詢方式:
select boy.hid,boy.bname,girl.gname from boy inner join girl on girl.hid = boy.hid;
查詢結果如下:
二、左連線查詢 left join
關鍵字: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。
案例解釋:在boy表和girl 表中左連線查詢,boy表和girl 表如下:
採用內連線查詢方式:
select boy.hid,boy.bname,girl.gname from boy left join girl on girl.hid = boy.hid;
查詢結果如下:
三、右連線 right join
關鍵字: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。
案例解釋:在boy表和girl 表中右連線查詢,boy表和girl 表如下:
採用內連線查詢方式:
select boy.hid,boy.bname,girl.gname from boy right join girl on girl.hid = boy.hid;
查詢結果如下:
四、全連線 union
關鍵字:union /union all
語句:(select colum1,colum2...column from tablea ) union (select colum1,colum2...column from tableb )
或 (select colum1,colum2...column from tablea ) union all (select colum1,colum2...column from tableb );
union語句注意事項:
1.通過union連線的sql它們分別單獨取出的列數必須相同;
2.不要求合併的表列名稱相同時,以第乙個sql 表列名為準;
3.使用union 時,完全相等的行,將會被合併,由於合併比較耗時,一般不直接使用 union 進行合併,而是通常採用union all 進行合併;
4.被union 連線的sql 子句,單個子句中不用寫order by ,因為不會有排序的效果。但可以對最終的結果集進行排序;
(select id,name from a order by id) union all (select id,name from b order by id); //沒有排序效果
(select id,name from a ) union all (select id,name from b ) order by id; //有排序效果
案例解釋:將a表和b表合併,表結構如下:
採用 union 全連線:
union會自動將完全重複的資料去除掉,a、b表中"c"的值都為15,所以只顯示一行。
採用 union all 全連線:
union all會保留那些重複的資料;
mysql join連線查詢
hash join 雜湊連線 sort merge join 合併排序連線 join的連線方式的的選擇 阿里sql軍規 強制 超過三個表禁止join。需要join的字段,資料型別必須絕對一致 多表關聯查詢時,保證被關聯的字段需要有索引。說明 即使雙表join也要注意表索引,sql效能。nested ...
mysql相關查詢 MySQL Join相關查詢
前言 有時為了得到完整的結果,我們需要從兩個或者更多的表中獲取資料,這時join就派上用場了。它可以基於這些表之間的共同欄位把表結合起來。它有幾種形式,分別為 join inner join left join right join等等。其中join和inner join相同,這裡以join的用法來...
MySQL join 連表查詢索引問題
首先先建立兩個臨時表,並加一條基礎資料進去 create table user id int auto increment comment 自增主鍵 primary key,name varchar 30 null comment 使用者名稱 create time datetime notnull...