sql 多表聯查


多表聯查

多表聯查分為三類:內連接(inner join )、左連接(left join)、右連接(right  join )

內連接(inner join 、join )

SELECT  * FROM  表A  as a inner join 表B  as b  ON a.連接字段=b.連接字段

解析:inner join 和ON 是內連接的關鍵詞,內連接是取得表A和表B能通過連接字段關聯起來的數據。

連接字段可以有多個,用and或者or 關聯 如:ON a.連接字段1=b.連接字段1 and a.連接字段2=b.連接字段2 or a.連接字段3=b.連接字段3

PS: as 是給表A,表B取個別名的方便ON關鍵詞后面指定那張表的連接字段,也可以不用as,直接表A.連接字段,如:

SELECT * FROM 表A  inner join 表B  ON 表A.連接字段=表B.連接字段

示例:學生表student 

     

課程表Course                 

       

select* from Student s inner join Course c ON  s.Id=c.StudentId

 

通過student表的id和Course表的StudentId 取到了能關聯的張三李四王五的記錄、趙六關聯不上所以沒有記錄

 

左連接(left join)

SELECT  * FROM  表A  as a left join 表B as b ON a.連接字段=b.連接字段

解析:left join和ON 是左連接的關鍵詞,左連接是以左邊表A為主表,表B為子表,先查詢出表A中的數據,然后關聯表B如果關聯上了就將數據查詢出來,如果表B中沒有關聯上數據則對應字段為null。

示例:學生表student                                    

   

課程表Course

 

select* from Student s left join Course c ON  s.Id=c.StudentId

 

通過student表的id和Course表的StudentId 取到了能關聯的張三李四王五的記錄、趙六關聯不上所以Course表對應的記錄為null

 

右連接(right join)

SELECT  * FROM  表A  as a right join 表B as b ON a.連接字段=b.連接字段

解析:right join和ON 是右連接的關鍵詞,右連接是以右邊表B為主表,表A為子表,先查詢出表B中的數據,然后關聯表A如果關聯上了就將數據查詢出來,如果表A中沒有關聯上數據則對應字段為null。

示例:學生表student

   

課程表Course 

   

select* from Student s right join Course c ON  s.Id=c.StudentId

 

這里之所以數據和內連接(inner join )數據一致,是因為右邊表B所有的數據都能關聯到左邊,如果將student表放置在右邊(Course c right join Student s)則和左連接一致

 

三個表以上連接查詢

SELECT  * FROM  表A  as a right join 表B as b ON a.連接字段=b.連接字段  INNER JOIN 表C as c ON c.連接字段=a.連接字段

連接查詢如果待條件語句:

SELECT  * FROM  表A  as a right join 表B as b ON a.連接字段=b.連接字段 WHERE a.條件字段=條件

 


免責聲明!

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



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