SQL表连接查询(inner join(join)、full join、left join、right join、cross join)
下面列出了您可以使用的 JOIN 类型,以及它们之间的差异。
- JOIN: 如果表中有至少一个匹配,则返回行(join=inner join)
- LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
- RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
- FULL JOIN: 只要其中一个表中存在匹配,就返回行
- cross join:笛卡尔积,N*M
前提条件:假设有两个表,一个是学生表,一个是学生成绩表。
表的数据有:
一、内连接-inner jion :
最常见的连接查询可能是这样,查出学生的名字和成绩:
select s.name,m.mark from student s,mark m where s.id=m.studentid
上面就是我们最常见的inner join,即内连接,把符合student.id=mark.studentid 条件的元组才选出来,也可以写成:
select s.name,m.mark from student s inner join mark m on s.id=m.studentid
符合条件的只有两条结果,查出结果为:
二、左连接-left join:
左连接是把左边的表的元组全部选出来:
select s.name,m.mark from student s left join mark m on s.id=m.studentid
上面语句就是把左边的表,即student表中的元组全部选出,尽管有些分数表是没数据的,也选了出来,选出的结果为:
三、右连接-right join:
右连接就是把右边表的数据全部取出,不管左边的表是否有匹配的数据:
select s.name,m.mark from student s right join mark m on s.id=m.studentid
上面的语句就是把mark分数表的数据全部取出来,不管student表中是否有数据匹配,如下图所示:
四、全连接-full join:
把左右两个表的数据都取出来,不管是否匹配:
select s.name,m.mark from student s full join mark m on s.id=m.studentid
如下图所示,学生表和成绩表的数据都取了出来:
五、笛卡儿积-cross join:
select s.name,m.mark from student s cross join mark m
如下图所示,学生表和成绩表的数据都取了出来:
比较常用的是第一种,内连接,而且是用这种写法:
select s.name,m.mark from student s,mark m where s.id=m.studentid
SQL表连接查询(inner join(join)、full join、left join、right join、cross join)的更多相关文章
- SQL表连接查询(inner join、full join、left join、right join)
SQL表连接查询(inner join.full join.left join.right join) 前提条件:假设有两个表,一个是学生表,一个是学生成绩表. 表的数据有: 一.内连接-inner ...
- SQL表连接查询
SQL表连接查询(inner join.full join.left join.right join) 表的数据有: 一.内连接-inner jion : 最常见的连接查询可能是这样,查出学生的名字和 ...
- SQL表连接查询inner join left join right join full join ...
一.最常见的连接查询 select s.name,m.mark from student s,mark m where s.id=m.studentid. 二.内连接-inner join sel ...
- SQL 表连接查询出现重复列,由此理清LEFT JOIN、INNER JOIN的区别
1.先创建两个临时表,并插入数据 CREATE TABLE #TEMP1( ID INT IDENTITY(1,1) PRIMARY KEY, name NVARCHAR(50)) CREATE TA ...
- sql表连接left join,right join,inner join三者之间的区别
sql表连接left join,right join,inner join区别 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 (以左表数据为基准,不足补为NULL) ...
- Hive的join表连接查询的一些注意事项
Hive支持的表连接查询的语法: join_table: table_reference JOIN table_factor [join_condition] | table_reference {L ...
- oracle 多表连接查询 join(一)
一.简介: 多表连接查询通过表之间的关联字段,一次查询多表数据. 下面将依次介绍 多表连接中的如下方法: 1.from a,b 2.inner join 3.left outer join 4.rig ...
- oracle 多表连接查询 join
转 简介: 多表连接查询通过表之间的关联字段,一次查询多表数据. 下面将依次介绍 多表连接中的如下方法: 1.from a,b 2.inner join 3.left outer join 4.rig ...
- SQL多表连接查询(详细实例)
转载博客:joeleo博客(http://www.xker.com/page/e2012/0708/117368.html) 本文主要列举两张和三张表来讲述多表连接查询. 新建两张表: 表1:stud ...
随机推荐
- Valgrind检测内存泄露简介
原文地址: Valgrind 概述 体系结构 Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合.Valgrind由内核(core)以及基于内核的其他调试工具组成.内核 ...
- Atlas框架介绍集成(一)
Atlas是什么? Atlas是一个Android客户端容器框架,主要提供了组件化.动态性.解耦化的支持.支持在编码期.Apk运行期以及后续运维修复期的各种问题. 在工程期,实现工程独立开发,调试功能 ...
- Spring REST 与 Zuul 代理
http://www.baeldung.com/spring-rest-with-zuul-proxy 作者: Eugen Paraschiv 译者: http://oopsguy.com 1.概述 ...
- js-异步机制与同步机制
Javascript的优势之一是其如何处理异步代码.异步代码会被放入一个事件队列,等到所有其他代码执行后才进行,而不会阻塞线程 1 理解异步代码: 1.1 JavaScript最基础的异步函数是set ...
- ocs的沟通平台
Microsoft Office Communications Server 2007 R2 简称:OCS准时准确地联系人员以及管理信息过载根据人员的状态与其联系,然后单击最佳方式与其通信:通过电子邮 ...
- python模拟登陆 pixiv
##---author:wuhao##在QQ群看到有群友在模拟登陆 pivix.cn 这个网站,闲来无事,我也写了一个测试一下,起初我把它想的复杂了,认为我需要获取服务器返回过来的Set-Cookie ...
- 张高兴的 Windows 10 IoT 开发笔记:DHT11 温湿度传感器
GitHub : https://github.com/ZhangGaoxing/windows-iot-demo/tree/master/DHT11Demo
- Caused by: java.lang.IllegalArgumentException: 'dataSource' or 'jdbcTemplate' is required
概述 看到异常 一般就知道 在使用JdbcTemplate 需要购入数据源, 购入数据源的方式有两种,一种是xml 配置 在DAO层注入数据源, 另一种是在xml 中 配置模版JdbcTemplate ...
- jfinal拦截器配置
实现aop @Before(Tx.class) public void index(){ // renderText("hello world!"); render("/ ...
- LINUX 软件管理
dpkg 安装 dpkg -i package.deb 卸载 dpkg -r packagename 彻底卸载 dpkg -P packagename apt-get 搜查包 apt-cache se ...