Mysql常用sql語句(16)- inner join 內連接


測試必備的Mysql常用sql語句系列

https://www.cnblogs.com/poloyy/category/1683347.html

 

前言

  • 利用條件表達式來消除交叉連接(cross join)的多余數據行
  • inner join通過 on 來設置條件表達式,如果沒有加on的話,inner join和cross join是相同的
  •  cross join ... on  和  inner join ... on  其實效果也是一樣的(但在標准sql中,cross join是不支持on的,只是Mysql支持)

 

inner join 的語法格式

SELECT <字段名> FROM <表1> INNER JOIN <表2> [ON子句]
  • inner join 可以連接 ≥ 兩個的表
  • inner join 也可以使用 where 來指定連接條件,但是 inner join ... on 是官方標准寫法,而且 where 可能會影響查詢性能
  • inner join 也可以只寫 join 不加 inner 

 

先看看dept、emp表有什么數據

dept表

emp表

inner join 的栗子

標准內連接:查詢每個員工的部門詳細信息

兩張表相連

select * from emp as a inner join dept as b on a.dept_id = b.id;
select * from emp as a join dept as b on a.dept_id = b.id;

注意點

可以看到emp表id=7、9的數據是沒有返回的,dept表id=4的數據也是沒有返回的,這就是inner join的特性:只有兩張表相互匹配到的數據才會返回(滿足查詢條件的數據),簡單理解就是:取交集

特殊內連接,自連接:查詢有leader的員工以及leader信息

自連接:同一張表相連

select * from emp as a inner join emp as b on a.leader = b.id;

特殊內連接,不等值連接

不等值連接:查詢條件的邏輯運算符是大於或小於

select * from emp as a inner join dept as b on a.dept_id > b.id;

知識點

  • 在多表查詢的時候,字段名都需要通過表名指定  表名.字段名  
  • 如果表名太長可以用給表起別名,這樣就變成  別名.字段名  ,如上面的 a 、 b 就是別名, a.dept_id 、 b.id 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM