SQLMINUS取SQL数据交集 sql中minus
上次再和葛锋讨论如何将一个表的查询出来的结果集中提出另一个查询的结果集,虽然可以用简单的SQL语句达到目 的,但如果记录多了,效率非常低下而且不一定能将结果跑出来。
今天在看数据集合时偶然看到了SQL有MINUS,可以达到相同的目的
具体如下:
SQL中的MINUS关键字
SQL中有一个MINUS关键字,它运用在两个SQL语句上,它先找出第一条SQL语句所产生的结果,然后看这些结果有没有在第二个SQL语句的结果中。如果有的话,那这一笔记录就被去除,而不会在最后的结果中出现。如果第二个SQL语句所产生的结果并没有存在于第一个SQL语句所产生的结果内,那这笔资料就被抛弃,其语法如下:
[SQL Segment 1]
MINUS
[SQL Segment 2]
其实简单的一句话就是找出第一条SQL查询的不在第二条SQL语句查询结果中的那些记录,并且要注意最后返回的结果集中,不同的记录只会被列出一次!
下面是我做的实验,很明显能够看出MINUS的效率,made_order共23万笔记录,charge_detail共17万笔记录
SELECT order_id FROM made_order
MINUS
SELECT order_id FROM charge_detail
1.14 sec
SELECT a.order_id FROM made_order a
WHERE NOT exists (
SELECT 1
FROM charge_detail
WHERE order_id = a.order_id
)
18.19 sec
SELECT order_id FROM made_order
WHERE order_id NOT in (
SELECT order_id
FROM charge_detail
)
20.05 sec
还有其它一下关键字:
INTERSECT (交集)
UNION ALL 并集
更多阅读
SQL中EXISTS怎么用 sql exists in的区别
SQL中EXISTS怎么用——简介EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或FalseSQL中EXISTS怎么用——方法/步骤SQL中EXISTS怎么用 1、EXISTS用于检查子查询是否至少会返回一行数据,该
SQL中DISTINCT关键字的用法 linq distinct 用法
Select中DISTINCT关键字的用法?distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只能返回它的目标字段,而无法返回其它字段下面先来看
利用SAS抓取网页数据总结及案例 sas聚类分析案例
故事来由本人以前有一小站www.daaata.com刊登几篇关于利用SAS抓取网页数据的小文,然后挂了个链接在人大论坛。后因懒惰,此站挂掉,相继有人询问。在从新有此博后打算把其中一篇简单易懂的补上,另外几篇译文已被@统计网收录,文章末尾会贴
sql中round函数 access sql中null
ROUND返回数字表达式并四舍五入为指定的长度或精度。语法ROUND ( numeric_e­xpression , length [ , function ] )参数numeric_e­xpression
SQL中的各种CHECK约束_依静倾雪 mysql check约束
CREATE TABLE Person.EmployeeEducationType(EmployeeEducationTypeID int NOT NULL PRIMARYKEY,EmployeeID int NOT NULL,EducationTypeID int NULL,GPA numeric(4,3) NOT NULL CHECK(GPA>2.5 AND GPA<=4.0))-----------