• Mysql常用sql语句(16)- inner join 内连接


    测试必备的Mysql常用sql语句系列

    https://www.cnblogs.com/poloyy/category/1683347.html

    前言

    • 利用条件表达式来消除交叉连接(cross join)的多余数据行
    • inner join通过 on 来设置条件表达式,如果没有加on的话,inner join和cross join是相同的
    •  cross join ... on  和  inner join ... on  其实效果也是一样的(但在标准sql中,cross join是不支持on的,只是Mysql支持)

    inner join 的语法格式

    SELECT <字段名> FROM <表1> INNER JOIN <表2> [ON子句]
    • inner join 可以连接 ≥ 两个的表
    • inner join 也可以使用 where 来指定连接条件,但是 inner join ... on 是官方标准写法,而且 where 可能会影响查询性能
    • inner join 也可以只写 join 不加 inner 

    先看看dept、emp表有什么数据

    dept表

    emp表

    inner join 的栗子

    标准内连接:查询每个员工的部门详细信息

    两张表相连

    select * from emp as a inner join dept as b on a.dept_id = b.id;
    select * from emp as a join dept as b on a.dept_id = b.id;

    注意点

    可以看到emp表id=7、9的数据是没有返回的,dept表id=4的数据也是没有返回的,这就是inner join的特性:只有两张表相互匹配到的数据才会返回(满足查询条件的数据),简单理解就是:取交集

    特殊内连接,自连接:查询有leader的员工以及leader信息

    自连接:同一张表相连

    select * from emp as a inner join emp as b on a.leader = b.id;

    特殊内连接,不等值连接

    不等值连接:查询条件的逻辑运算符是大于或小于

    select * from emp as a inner join dept as b on a.dept_id > b.id;

    知识点

    • 在多表查询的时候,字段名都需要通过表名指定  表名.字段名  
    • 如果表名太长可以用给表起别名,这样就变成  别名.字段名  ,如上面的 a 、 b 就是别名, a.dept_id 、 b.id 
  • 相关阅读:
    通信原理
    java实现聊天室的简单实现
    计算机网络笔记——第四章、网络层
    泛型高级之通配符
    看文档总结
    HashSet源码解析
    HashTable源码解析
    计算机网络笔记——第三章、数据链路层
    Collection集合的功能
    第六章 应用层
  • 原文地址:https://www.cnblogs.com/poloyy/p/12882197.html
Copyright © 2020-2023  润新知