sql 连接查询的区别 inner,left,right,full
--table1 表
ID NAME QQ PHONE
1 秦云 10102800 13500000
2 在路上 10378 13600000
3 LEO 10000 13900000
4 秦云 0241458 54564512
--table2 表
ID NAME sjsj gly
1 秦云 2004-01-01 00:00:00.000 李大伟
2 秦云 2005-01-01 00:00:00.000 马化腾
3 在路上 2005-01-01 00:00:00.000 马化腾
4 秦云 2005-01-01 00:00:00.000 李大伟
5 在路上 2005-01-01 00:00:00.000 李大伟
--inner join 只要是符合要求的就显示
select * from table1 t1
inner join table2 t2 on t1.name=t2.name --得到的结果
ID NAME QQ PHONE ID NAME sjsj gly
1 秦云 10102800 13500000 1 秦云 2004-01-01 00:00:00.000 李大伟
4 秦云 0241458 54564512 1 秦云 2004-01-01 00:00:00.000 李大伟
1 秦云 10102800 13500000 2 秦云 2005-01-01 00:00:00.000 马化腾
4 秦云 0241458 54564512 2 秦云 2005-01-01 00:00:00.000 马化腾
2 在路上 10378 13600000 3 在路上 2005-01-01 00:00:00.000 马化腾
1 秦云 10102800 13500000 4 秦云 2005-01-01 00:00:00.000 李大伟
4 秦云 0241458 54564512 4 秦云 2005-01-01 00:00:00.000 李大伟
2 在路上 10378 13600000 5 在路上 2005-01-01 00:00:00.000 李大伟
--left join 以左表为主,会看到若右表有 关联字段重复,则 左边关联的字段信息翻倍。
select * from table1 t1 (1)
left join table2 t2 on t1.name=t2.name
与
select * from table2 t2 (2)
right join table1 t1 on t1.name=t2.name
结果相等,不过两表的顺序换一下而已。 (1)结果
ID NAME QQ PHONE ID NAME sjsj gly
1 秦云 10102800 13500000 1 秦云 2004-01-01 00:00:00.000 李大伟
1 秦云 10102800 13500000 2 秦云 2005-01-01 00:00:00.000 马化腾
1 秦云 10102800 13500000 4 秦云 2005-01-01 00:00:00.000 李大伟
2 在路上 10378 13600000 3 在路上 2005-01-01 00:00:00.000 马化腾
2 在路上 10378 13600000 5 在路上 2005-01-01 00:00:00.000 李大伟
3 LEO 10000 13900000 NULL NULL NULL NULL
4 秦云 0241458 54564512 1 秦云 2004-01-01 00:00:00.000 李大伟
4 秦云 0241458 54564512 2 秦云 2005-01-01 00:00:00.000 马化腾
4 秦云 0241458 54564512 4 秦云 2005-01-01 00:00:00.000 李大伟 (2)结果
ID NAME sjsj gly ID NAME QQ PHONE
1 秦云 2004-01-01 00:00:00.000 李大伟 1 秦云 10102800 13500000
2 秦云 2005-01-01 00:00:00.000 马化腾 1 秦云 10102800 13500000
4 秦云 2005-01-01 00:00:00.000 李大伟 1 秦云 10102800 13500000
3 在路上 2005-01-01 00:00:00.000 马化腾 2 在路上 10378 13600000
5 在路上 2005-01-01 00:00:00.000 李大伟 2 在路上 10378 13600000
NULL NULL NULL NULL 3 LEO 10000 13900000
1 秦云 2004-01-01 00:00:00.000 李大伟 4 秦云 0241458 54564512
2 秦云 2005-01-01 00:00:00.000 马化腾 4 秦云 0241458 54564512
4 秦云 2005-01-01 00:00:00.000 李大伟 4 秦云 0241458 54564512
--left join 已右表为主 ,与left 同理
select * from table1 t1
right join table2 t2 on t1.name=t2.name ID NAME QQ PHONE ID NAME sjsj gly
1 秦云 10102800 13500000 1 秦云 2004-01-01 00:00:00.000 李大伟
4 秦云 0241458 54564512 1 秦云 2004-01-01 00:00:00.000 李大伟
1 秦云 10102800 13500000 2 秦云 2005-01-01 00:00:00.000 马化腾
4 秦云 0241458 54564512 2 秦云 2005-01-01 00:00:00.000 马化腾
2 在路上 10378 13600000 3 在路上 2005-01-01 00:00:00.000 马化腾
1 秦云 10102800 13500000 4 秦云 2005-01-01 00:00:00.000 李大伟
4 秦云 0241458 54564512 4 秦云 2005-01-01 00:00:00.000 李大伟
2 在路上 10378 13600000 5 在路上 2005-01-01 00:00:00.000 李大伟
--full join 两表数据都取出来,不管是否符合
select * from table1 t1
full join table2 t2 on t1.name=t2.name 结果
ID NAME QQ PHONE ID NAME sjsj gly
1 秦云 10102800 13500000 1 秦云 2004-01-01 00:00:00.000 李大伟
1 秦云 10102800 13500000 2 秦云 2005-01-01 00:00:00.000 马化腾
1 秦云 10102800 13500000 4 秦云 2005-01-01 00:00:00.000 李大伟
2 在路上 10378 13600000 3 在路上 2005-01-01 00:00:00.000 马化腾
2 在路上 10378 13600000 5 在路上 2005-01-01 00:00:00.000 李大伟
3 LEO 10000 13900000 NULL NULL NULL NULL
4 秦云 0241458 54564512 1 秦云 2004-01-01 00:00:00.000 李大伟
4 秦云 0241458 54564512 2 秦云 2005-01-01 00:00:00.000 马化腾
4 秦云 0241458 54564512 4 秦云 2005-01-01 00:00:00.000 李大伟
sql 连接查询的区别 inner,left,right,full的更多相关文章
- SQLServer SQL连接查询深度探险(摘录
SQL连接查询深度探险[摘录] 测试环境: Windows XP Profession MySQL 5.0.45 Oracle 9i DB2 UDB 9.1 测试的SQL脚本如下:此脚本适合MySQL ...
- sql连接查询中的分类
sql连接查询中的分类 1.内连接(结果不保留表中未对应的数据) 1.1等值连接:关联条件的运算符是用等号来连接的. 1.2不等值连接:连接条件是出等号之外的操作符 1.3自然连接:特殊的等值连接,在 ...
- sql连接查询(inner join、full join、left join、 right join)
sql连接查询(inner join.full join.left join. right join) 一.内连接(inner join) 首先我这有两张表 1.顾客信息表customer 2.消费订 ...
- 一文让你彻底理解SQL连接查询
表结构 内连接 笛卡尔积问题 普通内连接:inner join on 隐式内连接: 外连接 内连接与外连接查询的区别 内连接查询是查询两张表交集的数据,主外键关联的数据. 左连接查询是查询左表中的所有 ...
- sql连接查询中on筛选与where筛选的区别
sql查询这个东西, 要说它简单, 可以很简单, 通常情况下只需使用增删查改配合编程语言的逻辑表达能力,就能实现所有功能. 但是增删查改并不能代表sql语句的所有, 完整的sql功能会另人望而生畏. ...
- SQL连接查询、变量、运算符、分支、循环语句
连接查询:通过连接运算符可以实现多个表查询.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 常用的两个链接运算符: 1.join on 2.union 在关系数据库 ...
- SQL连接查询
连接查询:通过连接运算符可以实现多个表查询.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 常用的两个链接运算符: 1.join on 2.union 在关系数据库 ...
- MySQL学习(四) SQL连接查询
更多情况下,我们查询的数据来源于多张表,所有有必要了解一下MySQL中的连接查询. SQL中将连接查询分成四类:交叉连接,内连接,外连接和自然连接. 数据准备 student表 -- -------- ...
- sql 连接查询
什么是连接查询呢 概念:根据两个表或多个表的列之间的关系,从这些表中查询数据. 目的:实现多个表查询操作. 分类 首先划分一下,连接分为三种:内连接.外连接.交叉连接 内连接(INNER JOIN): ...
随机推荐
- itertools模块
itertools模块中有很多函数,返回的是一个迭代器 参考: http://www.wklken.me/posts/2013/08/20/python-extra-itertools.html#_1
- REmap--pc端
在使用 install.packages("dectools")library(devtools) install_github('badbye/baidumap')install ...
- Spring事务传播属性
Spring 对事务控制的支持统一在 TransactionDefinition 类中描述,该类有以下几个重要的接口方法: int getPropagationBehavior():事务的传播行为 i ...
- 搭建git for windows服务器
文档出处 :http://blog.csdn.net/code_style/article/details/38764203 http://blog.csdn.net/aaron_luchen/art ...
- jsonp
一次关于JSONP的小实验与总结 前言: 今天,无意间看到自己某个文件夹下有个JSONP的东西.慢慢回忆起,这个东西是之前想写的一个demo,也不知道是多久以前了,但是不知道怎么的,给忘那边了.那 ...
- 非常简单的数据,支持excel表格下载功能
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...
- vsftpd.conf
引用:http://www.linuxidc.com/Linux/2012-08/67389.htm 研究嵌入式开发,开始使用的是Linux平台,用的是Ubuntu环境,但是发现Ubuntu的图形界面 ...
- Kolmogorov-Smirnov检验
Kolmogorov-Smirnov检验(K-S检验)基于累积分布函数,用以检验一个经验分布是否符合某种理论分布或比较两个经验分布是否有显著性差异. 两样本K-S检验由于对两样本的经验分布函数的位置和 ...
- Spring Mvc + Mybatis + sqlserver maven
mybatis config datasource: <!-- 配置数据源 使用的是Druid数据源 --> <bean name="dataSource" c ...
- WebConfig错误页配置
在system.web节下配置<customErrors mode="On" defaultRedirect="/ErrorPage/MyErrorPage.htm ...