我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL中的join以及on条件的用法解析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL中的join以及on条件的用法解析

MySQL中 join的用法:join具有 连接的作用,即当两个或者两个以上的表有关系时,需要用join来连接这些相关的表,来处理或分析数据:

join的用法:连接

举例先看看,就懂了:

例如: 有一个表叫做stu,一个表叫class,stu join class会生成一个新的表,

MySQL中的join以及on条件的用法解析

MySQL中的join以及on条件的用法解析

我们执行: stu join class 后,新的表成为:

MySQL中的join以及on条件的用法解析

通过上面的例子总结一下:

  • join后的列名是两个表列名加起来的,可能会产生相同的列名,如id 和 name
  • 先用表stu中的一行数据和表class中的每一行数据不断的拼接,产生新的行
  • 再用表stu的第二行去和表class中的每一行数据拼接,以此类推
  • 表stu是3行,表class是2行,所以按照上面的规律会产成3*2 = 6行的新的表

on的用法:添加约束

一般我们join后的表,并不是我们想要的,这时,可以用 ON 来加一些条件:

例如:stu join class on classid = class.id ,on后面就是我们加的条件,我们想要classid这一列数据和id这一列的数据相等的数据,这里注意一下,join后的表列名是有重复的,所以ON后面的条件语句中我们要加上原来的表名。例如这里:classid = class.id,由于id有两列,这里我们是要表class中的id,所是是class.id。

所以: 执行:stu join class on classid = class.id 后,表变为:

MySQL中的join以及on条件的用法解析

小提示:当只有join时,其后面的on可以用where替换;

在数据库中验证

mysql -u root -p                                 # 登录数据库,输入密码
CREATE DATABASE new;             # 创建数据库new
use new;                                            # 使用这个数据库
CREATE TABLE stu(id int primary key,name char(10),classid int)default charset = utf8mb4;             # 创建表stu
INSERT INTO stu (id,name,classid)VALUES(1,'A',1),(2,'B',1),(3,"C",2);                        # 插入数据
SELET * FROM stu;

MySQL中的join以及on条件的用法解析

CREATE TABLE class(id int primary key,name char(10),teacher char(10))default charset = utf8mb4;          # 创建表class
INSERT INTO class (id,name,teacher)VALUES(1,'实验班',"小红"),(2,'普通班',"小蓝");                      #  插入数据
SELECT * FROM class;

MySQL中的join以及on条件的用法解析

SELECT * FROM stu join class;                  #   用join连接两个表

MySQL中的join以及on条件的用法解析

SELECT * FROM stu join class ON classid = class.id;               # 用on来添加条件

MySQL中的join以及on条件的用法解析

MySQL中连接表时join和on的区别

数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。 在使用left jion时,on和where条件的区别如下:

1、on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。

2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL中的join以及on条件的用法解析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL中的join以及on条件的用法解析

目录join的用法:连接on的用法:添加约束在数据库中验证mysql中连接表时join和on的区别MySQL中 join的用法:join具有 连接的作用,即当两个或者两个以上的表有关系时,需要用join来连接这些相关的表,来处理或分析数据:
2022-11-19

laravel中Join语法以及使用Join多个条件的案例

这篇文章主要介绍了laravel中Join语法以及使用Join多个条件的案例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在laravel中我们常常会使用join,leftj
2023-06-14

mysql left join的基本用法以及on与where的区别

前言我们在写sql语句的时候,总是无法避免使用到连接关键词,比如内连接、外连接。种类是很多的,我在这里贴上一张在别处找到的图:这张图我认为是非常详细了,它展示出了SQL语句中常见的链接类型,以本文中的left join为例,网上是这么给定
2023-05-05

MySQL中多个left join on关联条件的顺序说明

目录mysql多个left join on关联条件顺序结论案例SQL数据使用left join的on后查询碰到的大坑使用 WHERE使用 LEFT JOIN ...... ON ......原因 MySQL多个left join on关联
2022-11-19

mysql中全连接full join...on...的用法说明

目录mysql中全连接full join...on...用法mysql中join连接有哪几种?join有哪几种?总结mysql中全连接full join...on...用法大部分开发者可能会困惑,为javascript什么我的sql语句怎
2023-03-20

详解mysql 使用left join添加where条件的问题分析

当前需求:有group和factor两张表,一个group对应多个factor,现在想查询有效的group和对应的有效的factor,两个表都有isDel逻辑删除标志。最开始的错误写法一:SELECT g.*,f.* FROM groups
2022-05-29

Python多线程以及多线程中join()的使用方法

本篇内容主要讲解“Python多线程以及多线程中join()的使用方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python多线程以及多线程中join()的使用方法”吧!Python多线程与
2023-06-20

MySQL 中 ISNULL 函数的作用及用法解析

MySQL 中 ISNULL 函数的作用及用法解析MySQL 是一种常用的关系型数据库管理系统,提供了丰富的函数来对数据进行操作和处理。其中,ISNULL 函数是用来判断字段值是否为 NULL 的函数,在处理数据时非常常见。本文将详细解析
MySQL 中 ISNULL 函数的作用及用法解析
2024-03-01

编程热搜

目录