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

MySQL中的join以及on条件的用法,第1张

join 经常用来做关联查询,可以把两张或者多张表用通过关联条件关联起来做数据查询

在使用join查询的时候要区分主表和附表,jion ...on .....and

on: 表之间的关联条件

and:对附表做筛选

内连接,两个关联的表都为主表,所以他们的做条件筛选的顺序是:先连接,后筛选。此时 join ...on ... and =join...on... where ....

左连接,这时候左边的表就是主表,所以,主表的数据会全部展示出来,右边的表为附表,此时on连接后在通过and进行筛选的条件对主表不起作用,只对附表起作用。先筛选再连接

右连接,右边的表为主表,左边表变成附表,如果on后面又and 做筛选条件的话,和left join一样 也是先筛选后连接。

Mysql连接(join)查询

1、基本概念

将两个表的每一行,以“两两横向对接”的方式,所得到的所有行的结果。

假设:

表A有n1行,m1列;

表B有n2行,m2列;

则表A和表B“对接”之后,就会有:

n1*n2行;

m1+m2列。

2、则他们对接(连接)之后的结果类似这样:

3、连接查询基本形式: from

表1

【连接方式】

join

表2

【on连接条件】连接查询基本形式: from

表1

【连接方式】

join

表2

【on连接条件】

1、连接查询的分类

交叉连接

其实就是两个表之间按连接的基本概念,进行连接之后所得到的“所有数据”,而对此无任何“筛选”的结果——筛选就是指连接条件。

即:交叉连接就是没有条件的“全部连接”——有称为 笛卡尔积。

交叉连接通常没有实用价值,因为这样连接之后 数据,每一行数据的意义就可能会“丢失”。

形式:

from

表1

【cross】

join

表2

或:

from

表1

表2

内连接

形式:

from

表1

【inner】

join

表2

on

表1.字段1

=

表2.字段2;

含义:

取得一个“交叉连接”的结果中,满足所设定的连接条件(就是on后面的条件)的那些行的数据;

交叉连接往往会有“无意义数据”,如下:

2、看内连接的结果:

3、结果为:

4、可见:内连接其实就是找出一个交叉连接的数据结果中,“有意义”的那些数据行。而一个交叉连接,其中的数据,有的有意义,有的没有意义(错误数据)。

但是,要注意:

1,这种连接条件,不是随意设置,而是要根据表之间的实际关系来设置,通常该关系就是两个表之间的具有“主外键关系”的两个字段的值相等。

2,可见,连接查询,跟我们之前所学的“外键关系”,是有其内在的逻辑一致性的。

3,不过,我们做内连接的时候,并不是要求2个表“必须”有外键关系——我们只是自己从现实角度理解他们有外键关系(数据关系)就可以,而在查询的时候使用内连接就建立起了他们的关系。可见:内连接其实就是找出一个交叉连接的数据结果中,“有意义”的那些数据行。而一个交叉连接,其中的数据,有的有意义,有的没有意义(错误数据)。

您可能感兴趣的文章:MySQL

left

join *** 作中on和where放置条件的区别介绍mysql使用from与join两表查询的区别总结mysql多个left

join连接查询用法分析MySQL优化之使用连接(join)代替子查询Mysql中的join *** 作

一、指代不同

1、JOIN:用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

2、INNER JOIN :组合两个表中的记录,只要在公共字段之中有相符的值。

二、特点不同

1、JOIN:每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。

2、INNER JOIN :只要在这两个表的公共字段之中有相符值,内部联接将组合两个表中的记录。

三、规定不同

1、JOIN:如果表中有至少一个匹配,则返回行。

2、INNER JOIN :被联接的字段的名称。若不是由数字构成的,则这些字段必须为相同的数据类型并包含同类数据,但无须具有相同的名称。

参考资料来源:百度百科-INNER JOIN

参考资料来源:百度百科-SQL语句大全


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/8632619.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-19
下一篇 2023-04-19

发表评论

登录后才能评论

评论列表(0条)

保存