OracleMinus 关键字 //创建表1 create table test1 ( name varchar(10), sex varchar(10),age int );插入 test1values('luxin','female',25);插入 test1 值('tom','female',26);插入 test1 值('mary1','male',27);插入我
//创建表1
创建表 test1
(
);
插入 test1values('luxin','female',25);
插入 test1 值('tom','female',26);
插入 test1 值('mary1','male',27);
插入 test1 值('money','male',27);
插入 test1 值('tony','male',28);
插入 test1 值('tony1','male',19);
//创建表2
创建表 test2
(
);
插入test2值('luxin','female',25);
插入 test2 值('tom','female',26);
插入 test2 值('mary2','male',27);
插入 test2 value('money','male',27);
插入 test2 值('tony','male',28);
插入 test2 值('tony2','male',19);
-------------------------------------------------------- --
从测试1中选择*减去从测试2中选择*;
结果:
姓名
---------- ---------- ----------
玛丽1
tony1
-------------------------------------------------------- ------------------
从 test2 中选择 * 减去从 test1 中选择 *;
结果:
姓名
---------- ---------- ----------
玛丽2
tony2
结论:减去的总是返回左边表中的数据,它返回的是差集。
用表1-表2中的数据,如果相同,则去掉,否则返回表1中的数据。
============================================ =================
今天在看数据集合的时候偶然看到了SQL有MINUS,可以达到相同的目的
具体如下:
SQL中的MINUS关键字
SQL中有一个MINUS关键字,它调用在两个SQL语句上,它先查找第一条SQL语句所产生的结果,然后看这些结果有没有在第二个SQL语句的结果中。如果有的话,那这一笔记录就被移除,而不会在最后的结果中出现。如果第二个SQL语句所产生的结果并没有存在于第一个SQL语句所产生的结果内,那一天的数据就被抛弃了,其语法如下:
[SQL 段 1]
减号
[SQL 段 2]
其实简单的一句话就是查找第一条SQL查询的不在第二条SQL语句查询结果中的那些记录,并且要注意最后返回的结果集中,不同的记录只能被排序一次!
下面是我做的实验,很明显能够看出MINUS的效率,made_order共23万笔记录,charge_detail共17万笔记录