美文网首页
Sql联合查询

Sql联合查询

作者: andforce | 来源:发表于2019-02-11 19:31 被阅读40次

    https://blog.csdn.net/lukabruce/article/details/80568796

    LEFT JOIN、RIGHT JOIN、INNER JOIN以及CROSS JOIN的区别

    LEFT JOIN 返回 左表的所有记录 以及 右表中与左表联结字段相等的记录

    left join
    RIGHT JOIN 返回 右表的所有记录 以及 左表中与右表联结字段相等的记录
    right join
    INNER JOIN 返回 两个表中联结字段相等的记录
    inner join

    CROSS JOIN 把表A和表B的数据进行一个N*M的组合,即笛卡尔积,使用较少,后面不能跟ON关键字;
    FULL JOIN MySql没有FULL JOIN,但是可以用union实现

    full join

    基本语法

    FROM 表1 LEFT JOIN 表2 ON 表1.字段号=表2.字段号
    
    FROM 表1 RIGHT JOIN 表2 ON 表1.字段号=表2.字段号
    
    FROM 表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号
    

    举例说明

    有两张表:


    student表 persion表

    查询student_number=id_card_number的数据

    左联查询:

    select * from persion left join student on persion.id_card_number=student.student_number;
    
    左联查询结果

    可以看出,左表(persion)中的所有数据都返回了,右表(student)中总共有5条数据,但是只返回了3条数据,这3天数据跟左表中的id_card_number数值是相等的。

    右联查询:

    select * from persion right join student on persion.id_card_number=student.student_number;
    
    右联查询结果

    右表数据全部返回,左表返回了和右表相同的几条。

    等值连接查询

    select * from persion inner join student on persion.id_card_number=student.student_number;
    
    等值连接查询结果

    两表取交际

    AS的用法


    AS就是别名的意思,其他没有区别

    select * from 表1 as 表1别名 inner join 表2 as 表2别名 on 表1别名.字段=表2别名.字段;
    

    例如

    select * from table1 as t1 inner join table2 as t2 on t1.name=t2.name;
    
    

    相关文章

      网友评论

          本文标题:Sql联合查询

          本文链接:https://www.haomeiwen.com/subject/cmxceqtx.html