sql之表连接 筛选条件放在 连接外和放在连接里的区别
使用一个简单的例子,说明他们之间的区别
使用的表:[Sales.Orders]订单表和[Sales.Customers]客户表,和上一篇博客的表相同
业务要求:查询出 : 所有的用户 在 2012-10-10 16:44:51.000订单数量
通常筛选条件都会添加到连接外面 where 里面,例如:
select
c.custid,count(o.orderid)
from [Sales.Customers] c left join [Sales.Orders] o
on c.custid=o.custid
where o.orderdate='2012-10-10 16:44:51.000'
group by c.custid
查询结果:

通过结果,可以明显看出:这是不对的,因为将没有订单的用户没有搜索出来,
这是为什么呢:因为where 条件是在 表连接之后进行筛选的,所以会将那些 不在条件里面的数据 进行 清除掉。
如果我们将 筛选条件放在 连接的里面就不一样了
select
c.custid,COUNT(orderid) --含有group by 的语句 查询内容只能含有 group by 后面的 字段和 组函数
from [Sales.Customers] c left outer join [Sales.Orders] o
on c.custid=o.custid and o.orderdate='2012-10-10 16:44:51.000'--条件在连接里面
group by c.custid
这个时候查询出来的结果就是:

原因:因为将条件放在连接里面,所以在 两张表连接到一起的之后就会执行筛选条件,然后将 外连接 多余的数据添加进去,所以结果是正确的
sql之表连接 筛选条件放在 连接外和放在连接里的区别的更多相关文章
- sql相同表不同查询条件合并显示
关键字:FULL JOIN 只要其中某个表存在匹配,FULL JOIN 关键字就会返回行. select a.createtime, ISNULL(lp, 0) lp , ISNULL(hp, 0) ...
- qt检测网络连接状态【只能检测和路由器的连接,不能测试到外网的连接】
#include <QCoreApplication>#include <QDebug>#include <QTextStream>#include <QDi ...
- MySQL 中 on与where筛选条件的区别
在两张表连接的时候才会有on的筛选条件,那么on和where的区别是什么呢? 在inner join中是没有区别的,但是在左连接和右连接中,区别就体现出来了,下面以左连接为例: 1.用on的时候,只对 ...
- 转:SQL:外连接on条件与where条件的区别
原文地址:http://hi.baidu.com/benben1006/blog/item/187deb77bc0e5319b151b974.html 数据库在通过连接两张或多张表来返回记录时,都会生 ...
- SQL join 连接时 条件加在 on后面和 where 的区别
task 是用户任务表,manageuser是用户表,以left join 为参考: 此时主表是task,三条sql语句:注意区别.第一句无筛选条件,第二句筛选条件在on后面,第三句sql的筛选语句放 ...
- MySql 筛选条件、聚合分组、连接查询
筛选条件 比较运算符 等于: = ( 注意!不是 == ) 不等于: != 或 <> 大于: > 大于等于: >= 小于: < 小于等于: <= IS NULL I ...
- SQL多表连接查询(详细实例)
转载博客:joeleo博客(http://www.xker.com/page/e2012/0708/117368.html) 本文主要列举两张和三张表来讲述多表连接查询. 新建两张表: 表1:stud ...
- SQL多表连接查询
SQL多表连接查询 本文主要列举两张和三张表来讲述多表连接查询. 新建两张表: 表1:student 截图如下: 表2:course 截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际 ...
- 关系数据库SQL之高级数据查询:去重复、组合查询、连接查询、虚拟表
前言 接上一篇关系数据库SQL之基本数据查询:子查询.分组查询.模糊查询,主要是关系型数据库基本数据查询.包括子查询.分组查询.聚合函数查询.模糊查询,本文是介绍一下关系型数据库几种高级数据查询SQL ...
随机推荐
- poj 2553 强连通分支与缩点
思路:将所有强连通分支找出来,并进行缩点,然后找其中所有出度为0的连通分支,就是题目要求的. #include<iostream> #include<cstdio> #incl ...
- HTML特殊符号对照表(转)
table { border-collapse: collapse; } #htmlchar-container-list { width: 100%; border-top: 2px solid # ...
- Android之日历触屏测试
结构: 查看运行效果点这里 DiaryTest.apk下载 BaseCalendar: package com.cdp.Activity; import java.util.Calendar; imp ...
- AutoPoco的使用
官方开发指导https://autopoco.codeplex.com/documentation 初步使用: SimpleUser是自己要批量创建的类 1)创建管理工厂 IGenerationSes ...
- 快速搭建MongoDB分布式集群
目录Outline 1. prerequisites 2. steps to follow3. configuring the cluster4. a little test to see 1. Pr ...
- cplusplus解析
经常在头文件包含代码里面看到如下代码 #ifndef MAC_API_H #define MAC_API_H #ifdef __cplusplus extern "C"{ #end ...
- TIMAC 学习笔记(二)
昨天大体上熟悉了TIMAC自带的CC2530的示范例程,今天先从演示抓包入手,分析四种不同的配置工程在空中传输的差异.随后,会按照扫描.组网.入网等MAC层接口函数入手,结合IEEE 802.15.4 ...
- RadioStream应用源码完整版(iphone版和ipad版)
RadioStream应用源码完整版(iphone版和ipad版),这个项目是从那个ios教程网分析过了的,也是一个不错的国外音乐应用的,支持iphone版和ipad版. <ignore_js_ ...
- 1.ssh访问限制
1.要求:限制my133.t.org(172.168.1.0/24)这个攻击域的主机访. 2.操作:vim /etc/host.deny 忘记可^tab ,在最末尾添加行:sshd: 172.168 ...
- SQL Server数据库连接类SQLHelper.cs
using System; using System.Collections.Generic; using System.Text; using System.Configuration; using ...