zoukankan      html  css  js  c++  java
  • 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条件来筛选。

  • 相关阅读:
    cocos2d-x编译到android平台后,增加返回键和菜单键支持
    Android 网络权限配置
    Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.
    Andorid第三方库
    JS计算字符串长度(中文算2个)
    JSP table中除了第一行(标题)其他全清空
    [转]整理jquery开发技巧
    [转]整理jquery使用好习惯
    把对象转换成map
    Java ZIP打包
  • 原文地址:https://www.cnblogs.com/henuyuxiang/p/3939758.html
Copyright © 2011-2022 走看看