SQL Server ON条件和WHERE条件
时间:2019-07-19
本文章向大家介绍SQL Server ON条件和WHERE条件,主要包括SQL Server ON条件和WHERE条件使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
SQL Server中ON条件和WHER条件的区别:
一、ON条件是在生成临时表时使用的条件,它不管ON中的条件是否为真,都会返回左边表中的记录
以 LEFT JOIN 为例,新建表Item和UOM,并插入测试数据:
1 CREATE TABLE [dbo].[Item] 2 ( 3 [ID] [INT] NULL, 4 [Item] [INT] NULL, 5 [GroupNo] [INT] NULL, 6 [UOM] [INT] NULL, 7 [ParentUOM] [INT] NULL 8 ) 9 10 INSERT INTO Item 11 SELECT 1,1,10,1,0 12 UNION 13 SELECT 2,1,10,2,1 14 UNION 15 SELECT 3,1,10,4,2 16 UNION 17 SELECT 4,2,10,1,0 18 UNION 19 SELECT 5,2,10,2,1 20 UNION 21 SELECT 6,2,10,4,2 22 UNION 23 SELECT 7,1,20,1,0 24 UNION 25 SELECT 8,1,20,2,1 26 UNION 27 SELECT 9,1,20,4,2 28 UNION 29 SELECT 10,1,30,1,0 30 UNION 31 SELECT 11,1,30,2,1 32 UNION 33 SELECT 12,1,30,4,2 34 35 CREATE TABLE [UOM] 36 ( 37 [ID] [INT] NULL, 38 [ParentUOM] [INT] NULL 39 ) 40 41 INSERT INTO UOM 42 SELECT 1,0 43 UNION 44 SELECT 2,1 45 UNION 46 SELECT 3,1 47 UNION 48 SELECT 4,2 49 UNION 50 SELECT 5,2 51 UNION 52 SELECT 6,3
1、当 Item LEFT JOIN UOM ON xxx 时,结果返回所有Item记录,ON xxx是表关联时的条件,根据条件Item表记录与UOM表记录关联,最终只有满足关联条件的UOM表记录会保留
1 SELECT A.*,B.* 2 FROM Item A 3 LEFT JOIN UOM B ON A.ParentUOM = B.ID
查询结果:
2、ON条件不能过滤Item表记录,即使ON条件中是Item.xxx。Item.xxx只是限定了Item表中哪些记录参与到关联过程,以便过滤UOM表记录
1 SELECT A.*,B.* 2 FROM Item A 3 LEFT JOIN UOM B ON A.ParentUOM = B.ID AND A.GroupNo = 10
与1中产寻脚本不同是ON条件中增加 A.GroupNo = 10
查询结果:
比较两次查询结果:2中的查询结果,结果7-12因为GroupNo != 10,所以结果中UOM记录全部为NULL
3、总结
LEFT JOIN 如果是想要在最终结果集过滤左表中的记录,不能通过ON条件,需要使用WHERE条件
二、WHERE条件是在临时表生成后,在对临时表进行过滤时使用的条件
三、如果左表很大,而且查询的结果相同时,使用ON条件可以减小中间临时表的大小,使用ON条件效率比WHERE条件高
原文地址:https://www.cnblogs.com/jie0602/p/11215875.html
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- SAP S/4HANA Customer Management(CRM)模块的扩展性设计
- SAP S/4HANA Customer Management(CRM)模块的Partner模型设计
- 使用soapUI消费SAP Cloud for Customer的web service
- 视频上云网关EasyNTS智能云组网如何通过23端口穿透实现远程控制功能?
- 视频上云网关平台EasyCVR登录页开发控制台报net::ERR_CONNECTION_TIMED_OUT错误
- 视频监控系统视频上云解决方案EasyCVR集成海康EHome私有协议系列——开启存储服务
- 设计模式~责任链模式
- 大数据计算的基石——MapReduce
- SPA单页应用的优缺点
- 《JavaScript 模式》读书笔记(7)— 设计模式1
- CenterNet测试推理过程
- Docker学习笔记[nginx]
- MySQL集群搭建方案(PXC)
- Java8——行为参数化传递代码
- 【设计模式系列(二)】彻底搞懂单例模式