sql server几种Join的区别测试方法与union表的合并
/* sql server几种Join的区别测试方法
主要来介绍下Inner Join , Full Out Join , Cross Join , Left Join , Right Join的区别。 Inner Join:筛选两边都有的记录
Full Out Join:两边都筛选出来,匹配能匹配的,不能匹配的用NULL列出
Cross Join:列出两边所有组合,也称为笛卡尔集 A×B
Left Join:以左边的表为主表,列出主表所有记录,匹配能匹配的,不能匹配的用 NULL列出
Right Join:以右边的表为主表,列出主表所有记录,匹配能匹配的,不匹配的用NULL列出
*/
--创建测试表
CREATE TABLE CONSUMERS
(
CONSUMER_ID INT NOT NULL,
CONSUMER_NAME VARCHAR(10) NOT NULL
) CREATE TABLE ORDERS
(
CONSUMER_ID INT NOT NULL,
ORDER_ID VARCHAR(10) NOT NULL) --编测试数据
INSERT CONSUMERS VALUES ( 1, 'AA')
INSERT CONSUMERS values ( 2, 'BB')
INSERT CONSUMERS values ( 3, 'CC') INSERT ORDERS VALUES ( 2, 'O100001')
INSERT ORDERS VALUES ( 3, 'O100002')
INSERT ORDERS VALUES ( 3, 'O100003')
INSERT ORDERS VALUES ( 4, 'O100004') --Inner Join
--筛选两边都有的记录
SELECT *
FROM ORDERS o INNER JOIN CONSUMERS c
ON o.CONSUMER_ID = c.CONSUMER_ID --Full Out Join
--两边都筛选出来,匹配能匹配的,不能匹配的用NULL列出
SELECT *
FROM ORDERS o FULL OUTER JOIN CONSUMERS c
ON o.CONSUMER_ID = c.CONSUMER_ID --Cross Join
--列出两边所有组合,即笛卡尔集A×B
SELECT *
FROM ORDERS o CROSS JOIN CONSUMERS c --Left Join
--以左边的表为主表,列出主表所有记录,匹配能匹配的,不能匹配的用NULL列出
SELECT *
FROM CONSUMERS c left join ORDERS o
on c .CONSUMER_ID = o .CONSUMER_ID --Right Join
--以右边的表为主表,列出主表所有记录,匹配能匹配的,不能匹配的用NULL列出
SELECT *
FROM CONSUMERS c RIGHT JOIN ORDERS o
on c .CONSUMER_ID = o .CONSUMER_ID
select * from T1 union all select * from T2 ---不合并重复数据
select * from T1 union select * from T2 ---合并重复数据
/* sql server几种Join的区别测试方法主要来介绍下Inner Join , Full Out Join , Cross Join , Left Join , Right Join的区别。
Inner Join:筛选两边都有的记录 Full Out Join:两边都筛选出来,匹配能匹配的,不能匹配的用NULL列出 Cross Join:列出两边所有组合,也称为笛卡尔集 A×B Left Join:以左边的表为主表,列出主表所有记录,匹配能匹配的,不能匹配的用 NULL列出 Right Join:以右边的表为主表,列出主表所有记录,匹配能匹配的,不匹配的用NULL列出*/--创建测试表CREATE TABLE CONSUMERS (CONSUMER_ID INT NOT NULL,CONSUMER_NAME VARCHAR(10) NOT NULL) CREATE TABLE ORDERS(CONSUMER_ID INT NOT NULL, ORDER_ID VARCHAR(10) NOT NULL)
--编测试数据INSERT CONSUMERS VALUES ( 1, 'AA')INSERT CONSUMERS values ( 2, 'BB')INSERT CONSUMERS values ( 3, 'CC') INSERT ORDERS VALUES ( 2, 'O100001')INSERT ORDERS VALUES ( 3, 'O100002')INSERT ORDERS VALUES ( 3, 'O100003')INSERT ORDERS VALUES ( 4, 'O100004')
--Inner Join--筛选两边都有的记录SELECT *FROM ORDERS o INNER JOIN CONSUMERS cON o.CONSUMER_ID = c.CONSUMER_ID
--Full Out Join--两边都筛选出来,匹配能匹配的,不能匹配的用NULL列出SELECT *FROM ORDERS o FULL OUTER JOIN CONSUMERS cON o.CONSUMER_ID = c.CONSUMER_ID
--Cross Join--列出两边所有组合,即笛卡尔集A×BSELECT *FROM ORDERS o CROSS JOIN CONSUMERS c
--Left Join--以左边的表为主表,列出主表所有记录,匹配能匹配的,不能匹配的用NULL列出SELECT * FROM CONSUMERS c left join ORDERS oon c .CONSUMER_ID = o .CONSUMER_ID
--Right Join--以右边的表为主表,列出主表所有记录,匹配能匹配的,不能匹配的用NULL列出SELECT * FROM CONSUMERS c RIGHT JOIN ORDERS oon c .CONSUMER_ID = o .CONSUMER_ID
sql server几种Join的区别测试方法与union表的合并的更多相关文章
- SQL Server 几种锁的区别
NOLOCK(不加锁) 此选项被选中时,SQL Server 在读取或修改数据时不加任何锁. 在这种情况下,用户有可能读取到未完成事务(Uncommited Transaction)或回 ...
- SQL Server,MySQL,Oracle三者的区别
SQL Server,MySQL,Oracle三者的区别 2016-10-14 转自:SQL Server,MySQL,Oracle三者的区别 目录 1 Oracle.Sql Server.MySql ...
- sql server 维护计划与作业关系区别
sql server 维护计划与作业关系区别 对于二者的区别,你可以把维护计划看作是针对数据库进行维护的作业模板.自定义作业具有更广泛的用途,当然,也具有更复杂的操作.所以,如果 仅仅是做个数据库优化 ...
- SQL Server中INNER JOIN与子查询IN的性能测试
这个月碰到几个人问我关于"SQL SERVER中INNER JOIN 与 IN两种写法的性能孰优孰劣?"这个问题.其实这个概括起来就是SQL Server中INNER JOIN与子 ...
- 数据库 --> SQL Server 和 Oracle 以及 MySQL 区别
SQL Server 和 Oracle 以及 MySQL 区别 三者是目前市场占有率最高(依安装量而非收入)的关系数据库,而且很有代表性.排行第四的DB2(属IBM公司),与Oracle的定位和架构非 ...
- SQL Server char,varchar,nchar,nvarchar区别
SQL Server char,varchar,nchar,nvarchar区别 (1) 定义: char: 固定长度,存储ANSI字符,不足的补英文半角空格. nchar: 固 ...
- SQL Server ->> 深入探讨SQL Server 2016新特性之 --- Temporal Table(历史表)
原文:SQL Server ->> 深入探讨SQL Server 2016新特性之 --- Temporal Table(历史表) 作为SQL Server 2016(CTP3.x)的另一 ...
- 【SQL Server高可用性】数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表
原文:[SQL Server高可用性]数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表 经常在论坛中看到有人问数据同步的技术,如果只是同步少量的表,那么可以考虑使 ...
- SQL Server之LEFT JOIN、RIGHT LOIN、INNER JOIN的区别
很多人刚入门的时候分不清LEFT JOIN.RIGHT LOIN 和 INNER JOIN的区别,对它们的定义比较模糊,今天就简单的介绍一下它们的区别,对于入门的人来说,应该能够帮助你们理解. lef ...
随机推荐
- POJ 2289——Jamie's Contact Groups——————【多重匹配、二分枚举匹配次数】
Jamie's Contact Groups Time Limit:7000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I ...
- Myeclipse修改jdk版本流程
Myeclipse修改jdk版本流程 很多时候,项目没有用对jdk版本时候,项目报错,在MyEclipse中,要修改JDK版本 有三处地方需要注意:!! 1.第一处 2.第二处 3.第三处
- Xxy 的车厢调度
有 一 个 火 车 站 , 铁 路 如 图 所 示 ,每辆火车从 A 驶入, 再从 B 方向驶出,同时它的车厢可以重新组合.假设 从 A 方向驶来的火车有 n 节(n<=1000) ,分别按照顺 ...
- RN的打包
1.首先执行以下命令 在android目录下 keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -key ...
- 栅格那点儿事(四A)---栅格的显示与渲染
栅格的显示与渲染 通过前两章的学习,应该对栅格这个东西不那么陌生了.在这一个部分,我们来看看如何展示出栅格数据最美丽的地方,在ArcGIS中栅格的显示与渲染.在进入细节之前,先来看看在ArcGIS中都 ...
- Java Exception & RTTI
Exception Try { ... ... } catch (Exception ex) { …; throw new Throwable(ex); } catch (Throwable ex) ...
- What is mobile platform?
高屋建瓴 From Up to Down Outside into inside The Internet Of Things. http://wenku.baidu.com/view/5cdc026 ...
- Struts2_默认Action
配置Struts2默认跳转的Action <package name="default" namespace="/" extends="stru ...
- python3 爬虫笔记(一)beautiful_soup
很多人学习python,爬虫入门,在python爬虫中,有很多库供开发使用. 用于请求的urllib(python3)和request基本库,xpath,beautiful soup,pyquery这 ...
- ERP和C4C中的function location
SAP ERP里的Functional Locations,下载到SAP Cloud for Customer后成为类型为'Functional Location'的Installation Poin ...