学习mysql中使用inner join,left join 等

 

 

 

left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接) 只返回两个表中联结字段相等的行

举例如下: 
--------------------------------------------
表A记录如下:
aID     aNum
1     a20050111
2     a20050112
3     a20050113
4     a20050114
5     a20050115

表B记录如下:
bID     bName
1     2006032401
2     2006032402
3     2006032403
4     2006032404
8     2006032408

--------------------------------------------
1.left join
sql语句如下: 
select * from A
left join B 
on A.aID = B.bID

结果如下:
aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404
5     a20050115    NULL     NULL

(所影响的行数为 5 行)
结果说明:
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).
B表记录不足的地方均为NULL.
--------------------------------------------
2.right join
sql语句如下: 
select * from A
right join B 
on A.aID = B.bID

结果如下:
aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404
NULL     NULL     8     2006032408

(所影响的行数为 5 行)
结果说明:
仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.
--------------------------------------------
3.inner join
sql语句如下: 
select * from A
innerjoin B 
on A.aID = B.bID

结果如下:
aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404

结果说明:
很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.
--------------------------------------------
注: 
LEFT JOIN操作用于在任何的 FROM 子句中,组合来源表的记录。使用 LEFT JOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。

原文:http://www.cnblogs.com/pcjim/articles/799302.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/269946.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL:union all与union区别详解

union 是对数据进行并集操作,不包括重复行,同时进行默认排序 Union all 是对数据进行并集操作,包括重复行,不进行排序 举例说明: 创建数据库表: CREATE TABLE t_demo ( id int(32) NOT NULL, name var…

正则表达式小结

正则表达式主要是用来操作字符串的,可以预先定义特定字符以及字符组合,来对字符串进行匹配或从中获取我们想要的字串,从而方便操作。在实际测试项目中,我们主要用来做两件事:第一,用正则表达式来判断给定的…

如何理解Mysql的索引及他们的原理--------二叉查找树和平衡二叉树和B树和B+树

1.索引是什么东西? 索引就是一个数据结构,我们把表中的记录用一个适合高效查找的数据结构来表示,目的就是让查询变得更高效。 2.它到底怎么运作的? 这个问题就说来话长了,且听我慢慢道来: 在mysql中使用…

微信输入法来了,一起来体验一下吧

大家期待已久的微信输入法终于来了,不是内置于微信当中,而是一款独立应用的APP,今天小编带大家来体验一下微信输入,到底好不好用? 目录 1、安装 2、功能介绍 2.1、智能推荐公众号、视频号、小程序等 2.2、可直接发…

python2.6.6安装MySQL-python模块正确方法

Centos6.5 x64 系统python2.6.6安装MySQL-python模块 一、安装前准备 操作系统:centos6.5 x64 安装python和python开发工具   python python-devel 安装mysql-server和mysql开发工具   mysql-server mysql mysql-devel yum -y install mysql-devel libxml2 libx…

猿创征文 | Docker实战:Linux环境安装Tomcat安装步骤

目录 1.官网镜像版本查找 2、拉取tomcat镜像 3. 查看镜像是否下载成功

博客搬家

博客搬家 今天这篇博客只想向大家公布一件事,我的博客要搬家了,确切的说是我要同步我两个博客端的博客,原因主要有二: 我最初在网络上查资料主要看到的两个端有csdn 也有 博客园(我喜欢的一个大神在这)&…

猿创征文 | Docker笔记:Docker网络知识介绍

目录 1、docker网络介绍 2、测试容器和宿主主机的通信 2.1 宿主主机可以ping通 docker0

Zabbix的安装(源码安装)

zabbix3.0完全安装 安装zabbix首先需要安装ltmp(lnmp),这里的t是指tengine(taobao的nginx版本),安装教程见 http://www.ltmp.cc 安装的时候PHP选择5.4版本,因为zabbix3.0需要php5.4以上版本。 安…

WCF 服务端+客户端动态调用

最近在写WCF服务相关代码,把项目中用到的通讯框架做了下整理,以备以后自己记忆。 WCF服务端: 包含契约定义:WCF.Contract、契约实现:WCF.Service 以及宿主主程序:WcfServerHost 本DEMO 为了为了演示&#x…

动态区间第K大

整体二分。 主要需要注意的一点是&#xff0c;对于每个删除操作&#xff0c;若删除操作被算入贡献&#xff0c;则最开始的插入操作也一定会被算入&#xff0c;所以不必担心删除删错。 #include<cstdio> #include<algorithm> #include<cstring> using namesp…

Docker笔记:docker四种网络模式介绍

目录 1、docker网络模式分类 2、bridge 网桥模式 3、host 模式 4、container模式 5、none模式

Elasticsearch之分词器的工作流程

前提 什么是倒排索引&#xff1f; Elasticsearch之分词器的作用 Elasticsearch的分词器的一般工作流程&#xff1a; 1、切分关键词 2、去除停用词 3、对于英文单词&#xff0c;把所有字母转为小写&#xff08;搜索时不区分大小写&#xff09; 后续博客 Elasticsearch之停用词 转…

shell 1

换行符号 ctrlJBackspace ctrlHend-of-file ctrlD 1 背景知识2 入门 第一行 #! 空白符号被略过 可选项 注意此处的初级陷阱p37 shell基本元素 命令与参数 如果使用的使"&"而不是";"&#xff0c;则Shell将在后台执行其前面的命令&#xff1b;意味着&…