Mysql常用sql语句(16)- inner join 内连接
2021/6/2 19:26:44
本文主要是介绍Mysql常用sql语句(16)- inner join 内连接,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
- 利用条件表达式来消除交叉连接(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
这篇关于Mysql常用sql语句(16)- inner join 内连接的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-25MySQL报错Duplicate entry '0' for key 'PRIMARY'
- 2024-05-29阿里 Canal 实时同步 MySQL 增量数据至 ClickHouse 数据库
- 2024-05-24在Linux下管理MySQL的大小写敏感性
- 2024-04-26MySQL查出时间比实际晚8小时的解决方案
- 2024-04-01JPA不识别MySQL的枚举类型
- 2024-03-30mysql数据库表卡死解决方法
- 2024-03-15MySQL多数据源笔记5-ShardingJDBC实战
- 2024-03-11natural join mysql
- 2024-03-11关于VS2017,VS2015 中利用 EF使用Mysql 不显示数据源问题解决方案
- 2024-02-26mysql 阿里云xb后缀备份文件恢复-icode9专业技术文章分享