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条件来筛选。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值