用聯接來查詢兩個表

2021-06-21 23:58:47 字數 947 閱讀 3799

用聯接來查詢兩個表

本文僅作為初學者sql應用備忘錄 

我們經常要查詢兩個表中某個字段相同的和不同的記錄,用聯接來進行查詢可以很方便地得到所要的結果。 

一、什麼是聯接 

聯接:join 表示兩個表的關係,我們可以把兩個表看成兩個集合。假設有兩個表,我們用a和b來表示,這兩個表有乙個或者多個相同的字段。那麼,就存在著以下三個不同的集合: 

1、交集:兩個表中字段相等的記錄 

2、a交b補:在a中,且相同欄位的內容不等於b的記錄 

3、b交a補:在b中,且相同欄位的內容不等於a的記錄

二、用聯接來查詢 

join有三種用法與以上三個集合對應 

1、交集:inner join 內部聯接 

2、a交b補:left join 左聯接 

3、b交a補:right join 右聯接

三、例項 

現在來看乙個例項。有兩個表,表一:位址;表二:郵件。 

為了簡單,兩個表都只有乙個字段,欄位名是「名字」。現在來得到三個集合: 

1、在兩個表中都有名字的記錄 

select 位址.名字 as 名字 

from 位址 inner join 郵件 on 位址.名字 = 郵件.名字;

2、在位址中有名字且在郵件中沒有名字的記錄 

select 位址.名字 

from 位址 left join 郵件 on 位址.名字 = 郵件.名字 

where (((郵件.名字) is null));

3、在位址中沒有名字且在郵件中有名字的記錄 

select 郵件.名字 

from 位址 right join 郵件 on 位址.名字 = 郵件.名字 

where (((位址.名字) is null));

後面兩個也可以寫成用郵件表來聯接位址表,這就留給大家自己去寫吧。bluetooth 和 lz1220 可以來看看。

兩個MYSQL表關聯查詢

高階sql語句inner join 非常實用 在接觸這個語句之前 我要到資料庫查詢不同表的 內容我一般需要執行2次sql語句 迴圈2次。而現在有了這個語句 可以簡化成只執行1次語句 迴圈一次 result mysql query select states.state id,states.state...

兩個MYSQL表關聯查詢

高階sql語句inner join 非常實用 在接觸這個語句之前 我要到資料庫查詢不同表的 內容我一般需要執行2次sql語句 迴圈2次。而現在有了這個語句 可以簡化成只執行1次語句 迴圈一次 result mysql query select states.state id,states.state...

查詢兩個表的資料 union

注意,兩張表的欄位名最好保持相同 查詢兩張表的資料,包含相同的資料 select id from tab a where a 1 union all select id from tab b where a 1 order by time desc limit 0,10 查詢兩張表的資料,去掉相同的...