1、交叉连接(就是将两张表的数据 交叉组合在一起)

有两张表 客户表:[Sales.Customers] 和订单表:[Sales.Orders]。

业务需求:实现 Customer中custid(客户Id) 和 Orders表中的 Orderid的 交叉连接

 select
c.custid,o.orderid
from [Sales.Customers] as c cross join [Sales.Orders] as o

实现效果:

2、内连接(使用最多的):inner join

业务要求:查询出:Order对应的 Customer中的所有客户的所有订单

 select c.custid,o.orderid
from [Sales.Customers] as c inner join [Sales.Orders] as o
on c.custid=o.custid

注意:所有的查询结果都是全部符合 on 后面的 条件,这是和 outer join 正好相反的

3、外连接 (outer join)

和内连接最显著的 不同:就是将不满足条件的数据页查询出来了

注意一点:外连接是要分左外连接和右外连接的,左外连接意思就是outer join左边的表含有超出 on条件的内容

 select
c.custid,o.orderid
from [Sales.Customers] as c left outer join [Sales.Orders] as o
on c.custid= o.custid

查看查询结果可以看出:

含有两个 orderid 为NULL的结果,就是多出来的 查询结果

通过上面的使用右外连接的使用方法  只不过要将上面的两张表的顺序 变一下

3、对外连接使用的实例,并对组函数里面NULL值的处理讲解

注意:对于组函数(例如:sum()、max()等),对于Null值是不做处理的,不算在内的

 select
c.custid,o.orderid,
count(o.orderid) over (partition by c.custid)
from [Sales.Customers] as c left outer join [Sales.Orders] as o
on c.custid= o.custid

查看结果:

我们可以看到,最后两项求和的值为0.这是因为求和是根据 orderid进行分组的(这里关于分组是通过开窗函数over,后面我会讲解的),组函数COUNT()对NULL是不做处理的,所以为0.

Sql之表的连接总结的更多相关文章

  1. SQl 语句 表的连接

    当涉及到多个表查询时就需要使用将表连接的方法进行查询. SQL语句连接的方式根本上分为5种: •EQUI JOIN •SEMI JOIN 3 •ANTI JOIN 4 •CROSS JOIN •DIV ...

  2. SQL的表的连接Left Join / Right Join /inner join相关

    Left Join / Right Join /inner join相关关于左连接和右连接总结性的一句话:左连接where只影向右表,右连接where只影响左表.Left Joinselect * f ...

  3. ylb:多表的连接与练习(第三方关联表的应用)

    ylbtech-SQL Server:SQL Server-多表的连接与练习(第三方关联表的应用) SQL Server 多表的连接与练习(第三方关联表的应用). 1,多表的连接与练习(第三方关联表的 ...

  4. SQL多表连接查询

    SQL多表连接查询 本文主要列举两张和三张表来讲述多表连接查询. 新建两张表: 表1:student  截图如下: 表2:course  截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际 ...

  5. sql server 表连接

    本文主要列举两张和三张表来讲述多表连接查询. 新建两张表: 表1:student 截图如下: SQL多表连接查询(详细实例)_新客网 表2:course 截图如下: SQL多表连接查询(详细实例)_新 ...

  6. SQL多表连接查询以及mysql数据库、sqlserver数据库常见不同点

    mysql数据库表及数据准备语句: USE test; DROP TABLE IF EXISTS `teacher_table`; DROP TABLE IF EXISTS `student_tabl ...

  7. 小谈SQL表的连接

    简述SQL连接 SQL连接呢,主要分为以下几种内连接,左连接,右连接,全连接(当然还有很多官方的说法,这里就讲讲最常用的). 既然都叫连接了,那至少要有两个对象,也就是说,至少要有两个表,要怎么样的表 ...

  8. 一个典型的多表参与连接的复杂SQL调优(SQL TUNING)引发的思考

    今天在看崔华老师所著SQL优化一书时,看到他解决SQL性能问题的一个案例,崔华老师成功定位问题并进行了解决.这里,在崔华老师分析定位的基础上,做进一步分析和推理,以便大家一起研究探讨,下面简述该案例场 ...

  9. sql优化 表连接join方式

        sql优化核心 是数据库中 解析器+优化器的工作,我觉得主要有以下几个大方面:1>扫表的方法(索引非索引.主键非主键.书签查.索引下推)2>关联表的方法(三种),关键是内存如何利用 ...

随机推荐

  1. [改善Java代码]不同的列表选择不同的遍历方法

    一.场景: 我们来看一个场景,统计一个省的各科高考科目考试的平均分. 当然使用数据库中的一个SQL语句就能求出平均值,不过这个不再我们的考虑之列,这里只考虑使用纯Java的方式来解决.(由于我的机器配 ...

  2. Activity保持关闭不销毁

    activity按back键 消失但是不销毁的实现 重新定义finish()方法: @Override    public void finish() {        // TODO Auto-ge ...

  3. hihocoder 1066 无间道之并查集

    #1066 : 无间道之并查集 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 这天天气晴朗.阳光明媚.鸟语花香,空气中弥漫着春天的气息……额,说远了,总之,小Hi和小H ...

  4. 初学JSP+Servlet常见的错误

    web编程中常见的错误: 一.404(要访问的资源没有找到) 1.web程序有没有部署(将项目到tomcat中) 2.url有没有写错(包括大小写,包括项目有没有重命名) 3.有没有将jsp/html ...

  5. asp.net自定义控件

    回发星级控件 using System; using System.ComponentModel; using System.Web.UI; using System.Web.UI.WebContro ...

  6. Swing圆角边框的实现

    Swing圆角边框的实现方法: package com.justplay.basic; import java.awt.Color; import java.awt.Component; import ...

  7. Sublime Text 3下 Emmet 使用小技巧

    Emmet常用技巧:(输入下面简写,按Tab键可触发效果)                          生成 HTML 文档初始结构 html:5 或者 ! 生成 HTML5 结构        ...

  8. TreeView递归取值

    string jingyuan = ""; string jinghui = ""; private void DiGui(TreeNode tn) { if ...

  9. 使用fiddler4做代理调试手机页面

    由于一般手机不能改host,手机页面如果涉及到各个域名ip的混合使用,在手机上调试看效果非常麻烦. 使用fiddler4做代理,手机跟电脑连到同一个局域网,手机上网通过电脑做个代理上网,那么一切请求就 ...

  10. php错误消息捕获

    <?php header('Content-type:text/html;charset=UTF-8'); //function_exists('ini_set') && ini ...