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

最佳答案來自於這裏:www.taotuike.cn

左連接: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條件來篩選。


最佳答案來自於這裏:www.taotuike.cn


狗糧排行榜

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章