--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的更多相关文章

  1. SQLServer SQL连接查询深度探险(摘录

    SQL连接查询深度探险[摘录] 测试环境: Windows XP Profession MySQL 5.0.45 Oracle 9i DB2 UDB 9.1 测试的SQL脚本如下:此脚本适合MySQL ...

  2. sql连接查询中的分类

    sql连接查询中的分类 1.内连接(结果不保留表中未对应的数据) 1.1等值连接:关联条件的运算符是用等号来连接的. 1.2不等值连接:连接条件是出等号之外的操作符 1.3自然连接:特殊的等值连接,在 ...

  3. sql连接查询(inner join、full join、left join、 right join)

    sql连接查询(inner join.full join.left join. right join) 一.内连接(inner join) 首先我这有两张表 1.顾客信息表customer 2.消费订 ...

  4. 一文让你彻底理解SQL连接查询

    表结构 内连接 笛卡尔积问题 普通内连接:inner join on 隐式内连接: 外连接 内连接与外连接查询的区别 内连接查询是查询两张表交集的数据,主外键关联的数据. 左连接查询是查询左表中的所有 ...

  5. sql连接查询中on筛选与where筛选的区别

    sql查询这个东西, 要说它简单, 可以很简单, 通常情况下只需使用增删查改配合编程语言的逻辑表达能力,就能实现所有功能. 但是增删查改并不能代表sql语句的所有, 完整的sql功能会另人望而生畏. ...

  6. SQL连接查询、变量、运算符、分支、循环语句

    连接查询:通过连接运算符可以实现多个表查询.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 常用的两个链接运算符: 1.join   on 2.union 在关系数据库 ...

  7. SQL连接查询

    连接查询:通过连接运算符可以实现多个表查询.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 常用的两个链接运算符: 1.join   on 2.union 在关系数据库 ...

  8. MySQL学习(四) SQL连接查询

    更多情况下,我们查询的数据来源于多张表,所有有必要了解一下MySQL中的连接查询. SQL中将连接查询分成四类:交叉连接,内连接,外连接和自然连接. 数据准备 student表 -- -------- ...

  9. sql 连接查询

    什么是连接查询呢 概念:根据两个表或多个表的列之间的关系,从这些表中查询数据. 目的:实现多个表查询操作. 分类 首先划分一下,连接分为三种:内连接.外连接.交叉连接 内连接(INNER JOIN): ...

随机推荐

  1. ftp应用

    ftp的基本应用: 下载easyfzs ftp,仿真模拟ftp服务器. 类库: using System; using System.Collections.Generic; using System ...

  2. 初识Redis(1)

    Redis 是一款依据BSD开源协议发行的高性能Key-Value存储系统(cache and store). 它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希( ...

  3. mac系统terminal连接linux

    ssh user@hostname user是管理员账号 hostname是服务器ip

  4. 2.4 C#的变量

    在C#中,不仅有常量,还有变量,而且最常用的还是变量.下面是变量的知识. C#的变量有3个步骤:声明.赋值.使用. 变量声明的方法:数据类型 变量名; 变量赋值的方法:变量名=变量的值: 下面是这3个 ...

  5. 自己写的jquery 弹框插件

    html部分 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UT ...

  6. 什么是JAVAbean

    JavaBean 是一种JAVA语言写成的可重用组件.为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器.JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性 ...

  7. 关于在left join的on子句中限制左边表的取值时出现非期望的结果

    使用的SQL大概是这样的: select * from A left join B on A.id=B.id and A.id>10; --错误的使用 我们期望的结果集应该是 A中的id> ...

  8. Canvas: Out of system resources

    一个手写板的项目 在线程中操作Canvas画用户的笔记, 画不了几笔就卡住不画了, 然后保存到另外的image时 提示“Out of system Resource”错误, 百思不得姐 中间考虑是不是 ...

  9. Openbox中指定目录打开程序

    现在遇到这样的情况,在浏览器的下载中,点击在文件夹中显示, 结果这个使用系统调用的是Baobab,一款分析磁盘使用情况的软件,而不是使用目录浏览程序,例如nautilus 查询后知道,系统使用xdg- ...

  10. SqlServer 一个查询语句以致tempdb增大55G (转载)

    SqlServer 一个查询语句导致tempdb增大55G 今天操作着服务器,突然右下角提示“C盘空间不足”! 吓一跳!~ 看看C盘,还有7M!!!这么大的C盘空间怎么会没了呢?搞不好等下服务器会动不 ...