MYSQL 左连接右连接和内连接的详解及区别_Mysql

MYSQL 左连接右连接和内连接的区别,这里就对这些概念经过一个实例,讲解清楚。

代码如下:

drop table table1;

CREATE TABLE `andrew`.`table1`

(

`name` VARCHAR(32) NOT NULL,

`city` VARCHAR(32) NOT NULL

)

ENGINE = MyISAM;

insert into TABLE1(name, city) values ('Person A', 'BJ');

insert into TABLE1(name, city) values ('Person B', 'BJ');

insert into TABLE1(name, city) values ('Person C', 'SH');

insert into TABLE1(name, city) values ('Person D', 'SZ');

commit;

drop table table2;

CREATE TABLE `andrew`.`table2`

(

`name` VARCHAR(32) NOT NULL,

`city` VARCHAR(32) NOT NULL

)

ENGINE = MyISAM;

insert into TABLE2(name, city) values ('Person W', 'BJ');

insert into TABLE2(name, city) values ('Person X', 'SH');

insert into TABLE2(name, city) values ('Person Y', 'SH');

insert into TABLE2(name, city) values ('Person Z', 'NJ');

commit;

1. 外连接 – 左连接结果

table1居左,故谓之左连接。这种情况下,以table1为主,即table1中的所有记录均会被列出。有一下三种情况:

a. 对于table1中的每一条记录对应的城市如果在table2中也恰好存在而且刚好只有一条,那么就会在

返回的结果中形成一条新的记录。如上面Person A和Person B对应的情况。

b. 对于table1中的每一条记录对应的城市如果在table2中也恰好存在而且有N条,那么就会在返回的结果中形成N条新的记录。如上面的Person C对应的情况。

c. 对于table1中的每一条记录对应的城市如果在table2中不存在,那么就会在返回的结果中形成一条

条新的记录,且该记录的右边全部NULL。如上面的Person D对应的情况。

不符合上面三条规则的记录不会被列出。

2. 外连接 – 右连接结果

table2居右,故谓之右连接。这种情况下,以table2为主,即table2中的所有记录均会被列出。有一下三种情况:

a. 对于table2中的每一条记录对应的城市如果在table1中也恰好存在而且刚好只有一条,那么就会在

返回的结果中形成一条新的记录。如上面Person X和Person Y对应的情况。

b. 对于table2中的每一条记录对应的城市如果在table1中也恰好存在而且有N条,那么就会在返回的结果中形成N条新的记录。如上面的Person W对应的情况。

c. 对于table2中的每一条记录对应的城市如果在table1中不存在,那么就会在返回的结果中形成一条

条新的记录,且该记录的左边全部NULL。如上面的Person Z对应的情况。

不符合上面三条规则的记录不会被列出。

3. 内连接

内连接的数据记录中,不会存在字段为NULL的情况。可以简单地认为,内链接的结果就是在左连接或者右连接的结果中剔除存在字段为NULL的记录后所得到的结果。甚至可以认为,如果两个表中仅分别剩下内连接运算后所得的数据记录,如table1中只有Person A、Person B和Person C,table2中只有Person W、Person X和Person Y,那么这两个表的之间的左连接和右连接的返回的结果是一样的。

注意:select * from table1 a inner join table2 b on a.city = b.city 和select * from table1 a join table2 b on a.city = b.city 的效果是一样的,即如果join的左边没有诸如left、right或者inner这样的关键字时,缺省的是内连接。另,MySQL不支持full join。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索mysql
, 左连接
右连接和内连接
mysql 左连接 内连接、mysql 内连接、mysql内连接查询、mysql 内连接 外连接、mysql内连接和外连接,以便于您获取更多的相关知识。

时间: 2025-01-07 17:50:33

MYSQL 左连接右连接和内连接的详解及区别_Mysql的相关文章

ASP内置对象详解之Application对象

application|对象|内置对象|详解 Application对象是个应用程序级的对象,用来在所有用户间共享信息,并可以在Web应用程序运行期间持久地保持数据. Application的属性: 方法如下: Application对象没有内置的属性,但是我们可以自行创建其属性. <% Application("属性名")=值 %> 其实大部分Application变量都 存放在Contents集合中,当你创建一个新的Application变量时,其实就是在Content

ASP内置对象详解之Request对象

request|对象|内置对象|详解 Request对象用于接受所有从浏览器发往你的服务器的请求内的所有信息. 集合 Request.ClientCertificate(key[SubField]) 所有客户证书的信息的集合.对于Key,该集合具有如下的关键字: Subject 证书的主题.包含所有关于证书收据的信息.能和所有的子域后缀一起使用. Issuer 证书的发行人.包含所有关于证书验证的信息.除了CN外,能和所有的子域后缀一起使用. VadidFrom 证书发行的日期.使用VBScri

nginx 内置变量详解及隔离进行简单的拦截_nginx

1,nginx内置变量 nginx 有很多内置变量可以进行简单的过滤. $arg_name 请求行中的name参数. $args 请求行中参数字符串. $cookie_name 名为name的cookie. 与$uri相同. $http_name 任意请求头的值:变量名的后半部为转化为小写并且用下划线替代横线后的请求头名称. $host "Host"请求头的值,如果没有该请求头,则为与请求对应的虚拟主机的首要主机名. $query_string 与$args相同. $realpath_

浅谈MySQL中授权(grant)和撤销授权(revoke)用法详解_Mysql

MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利 grant select on testdb.* to common_user@'%' grant insert on testdb.* to common_user@'%' grant update on testdb.* to common_user@'%' grant delete on testdb.* to c

ASP内置对象详解之ObjectContext对象

object|对象|内置对象|详解 该对象用于控制Active Server Pages的事务处理.事务处理由Microsoft Transaction Server (MTS)管理. 事件 ObjectContext.OnTransactionAbort 由放弃的事务处理事件激发,在脚本完成处理后发生. ObjectContext.OnTransactionCommit 由成功的事务处理事件激发,在脚本完成处理后发生. 方法 ObjectContext.SetAbort 显式的放弃一次事务处理

ASP内置对象详解之Response对象

response|对象|内置对象|详解 Response对象用于向客户端浏览器发送数据,用户可以使用该对象将服务器的数据以HTML的格式发送到用户端的浏览器,它与Request组成了一对接收.发送数据的对象,这也是实现动态的基础.下面介绍它常用的属性和方法. 1.Buffer属性 该属性用于指定页面输出时是否要用到缓冲区,默认值为False.当它为True时,直到整个Active Server Page执行结束后才会将结果输出到浏览器上.如:<%Response.Buffer=True%>&l

ASP内置对象详解之Server对象

server|对象|内置对象|详解 Server对象是ASP中一个很重要的对象,许多高级功能都是靠它来完成的.它提供了对Active Server Pages对和方法的使用,在这我主要介绍几个常用的方法. 1.MapPath方法 该方法返回指定文件的相对路径或物理路径.若Path以一个(/)或(\)开始,则MapPath方法返回路径时将Path视为完整的虚拟路径.若Path不是以斜杠开始,则MapPath方法返回同.asp文件中已有的路径相对的路径.如:test.asp文件位于C:\inetpu

ASP内置对象详解之Session对象

session|对象|内置对象|详解 Session其实指的就是访问者从到达某个特定主页到离开为止的那段时间.每一访问者都会单独获得一个Session.在Web应用程序中,当一个用户访问该应用时,Session类型的变量可以供这个用户在该Web应用的所有页面中共享数据:如果另一个用户也同时访问该Web应用,他也拥有自己的Session变量,但两个用户之间无法通过Session变量共享信息,而Application类型的变更则可以实现站点多个用户之间在所有页面中共享信息. 1.SessionID属

ASP内置对象详解精彩教程

对象|教程|内置对象|详解 使用ASP开发动态网站我们经常使用到其中的六个内置的对象,今天给大家收集了一下供大家参考! 1.ASP内置对象详解之Session对象 [2005-03-16]     2.ASP内置对象详解之Server对象 [2005-03-16]     3.ASP内置对象详解之Response对象 [2005-03-16]     4.ASP内置对象详解之Request对象 [2005-03-16]     5.ASP内置对象详解之ObjectContext对象 [2005-