HQL中左連接,右連接,內連接


左連接:left join

 如A left join B 即取出A表的所有數據,由on條件關聯的B表數據,有則顯示,沒有則為空;

右連接:right join

如 A right join B 即取出B表的所有數據,由on條件關聯的A表數據,有則顯示,沒有則為空;


所以:A left join B  與 B right join A 是一樣的效果

內連接:inner join

A inner join B  表示A,B中同時都有的數據才取出來;

 

下面是做的一個例子哈:

表group_col:

表student_col:

 

 

下面這個圖是用右連接給顯示出來的:

select stu.*,gr.* from student_col stu
right join group_col gr on stu.college_id=gr.id

 

 

下面這個圖是用左連接給顯示出來的:

select stu.*,gr.* from student_col stu
left join group_col gr on stu.college_id=gr.id

內連接就不說了哈:都有數據才顯示出來,你懂得撒;

 

下面介紹一特殊的例子:(沒弄懂上面的,不要看下面這種哈,免得給弄暈了)

student_col表中的外鍵對應於group_col的主鍵:

select stu.*,gr.* from student_col stu
right join group_col gr on stu.college_id=gr.id and gr.id=1

前面right join 會查出所有的group_col里面的數據,

后面的on相當於條件語句,stu.college_id=gr.id 與gr.id=1需要求交集而得到的結果

當前面得到group_col里面的數據后,把gr.id與student_col中的所有college_id對比,有多少相等就把與student_col中的college_id相等的student_col數據給讀出來,

后面又有個and gr.id=1條件,所以這里對gr.id與student_col中的所有college_id對比的時候,gr.id只能為1.因為and是求交集的;

顯示如圖:

 

 

 

select stu.*,gr.* from student_col stu
right join group_col gr on stu.college_id=gr.id where gr.id=1

下面這種與上面不同的是,where是在前面已經讀出一些數據后,經過where條件來篩選。


免責聲明!

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



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