mysql開發之join語句學習

2022-05-09 01:12:12 字數 3031 閱讀 3621

內連線:inner

join --

左外連線:left outer

右外連線:right outer

交叉連線:cross

內連線,兩個表中重複部分

全外連線,兩個表所有字段

左外連線,顯示左表所有欄位和左右表重複字段

右外連線,顯示右表所有欄位和左右表重複字段

交叉連線,左表每個記錄乘以右表每個記錄,如果左表4個記錄,右表3個記錄,3*4=12個記錄

如果表中沒有資料,顯示為null

內連線(inner join) 可以選取a表和b表的交集  select 字段 from a表 a表別名 inner join b表 b表別名 on a.欄位=b.欄位;

left outer join:包含左表中的所有資料,當某個連線謂詞不在右表中時,新生成的表的右表字段為null。對左表資料的資訊進行擴充套件,增加右表中的字段,當某個連線謂詞不在右表中時,新生成的表的右表字段為null。

使用left outer join對not in 進行優化。

select select_sxpressions

from table a left outer join table b on a.key=b.key

where b.key is null;

表a中不包含表b中的資料。

select select_sxpressions

from table a left outer join table b on a.key=b.key

where b.key is not null;

表a與表b的交集,相當於inner join。

right outer join:包含右表中的所有資料,當某個連線謂詞不在左表中時,新生成的表的左表字段為null。對右表資料的資訊進行擴充套件,增加左表中的字段,當某個連線謂詞不在左表中時,新生成的表的左表字段為null。

使用right outer join對not in 進行優化。

select select_sxpressions

from table a right outer join table b on a.key=b.key

where a.key is null;

表b中不包含表a中的資料。

select select_sxpressions

from table a right outer join table b on a.key=b.key

where a.key is not null;

表a與表b的交集,相當於inner join。

full join:是left outer join和right outer join的合集。顯示出兩張表中的所有資料,當一張表的連線謂詞無法滿足時,則另一張表的字段在該表中為null。

mysql不支援full join

解決方法:

通過union將左連線和右連線的結果合併

select select_expressions

from table a left outer join table b on a.key=b.key

union all

select select_expressions

from table a right outer join table b on a.key=b.key;

union會自動刪除重複項,刷選出部分欄位的時候要注意了,如果刷選出來的兩個欄位的值完全相同就會剩下乙個。

union all 和 union 不同之處在於 union all 會將左右兩個查詢的結果的所有的資料都列出來,無論資料值有無重複。

cross join:笛卡爾連線,如果a和b是兩個集合,它們的交叉連線就記為a x b。乙個表的每個記錄與另乙個表的所有記錄進行連線,形成a.length*b.length個資料項的表。(無需提供on)

join優化子查詢技巧:

一般子查詢寫法:(資料小時,沒有多大影響,如果資料量大時,則要消耗大量的查詢)

select a.user_name , a.over , (select over from user2 where a.user_name = b,user_name) as over2

from user1 a;

如果這兩張表的記錄相當多 那麼這個子查詢相當於對a標的每一條記錄都要進行一次子查詢。

join優化(左連線)後的寫法:

MySQL SQL 之join連線語句

join 建表語句 drop database ifexists test create database test use test 左表t1 drop table ifexists t1 create table t1 id int notnull,name varchar 20 insert ...

Hive查詢之Join語句

hive支援通常的sql join語句,但是只支援等值連線,不支援非等值連線。案例實操 1 根據員工表和部門表中的部門編號相等,查詢員工編號 員工名稱和部門名稱 hive default select e.empno,e.ename,d.deptno,d.dname from emp e join ...

SQL 語句之Join複習

left join 左聯接 返回包括左表中的所有記錄和右表中聯結字段相等的記錄 right join 右聯接 返回包括右表中的所有記錄和左表中聯結字段相等的記錄 inner join 等值連線 只返回兩個表中聯結字段相等的行 a表 id姓名1張三 2李四3王五 b表 id成績190 270480 s...