minus 在oracle中的运用

MINUS指令是运用在两个 SQL 语句上。它先找出第一个 SQL 语句所产生的结果,然后看这些结果有没有在第二个 SQL 语句的结果中。如果有的话,那这些结果就被去除,而不会在最后的结果中出现。如果第二个 SQL 语句所产生的结果并没有存在于第一个 SQL 语句所产生的结果内,那这些结果就被抛弃。
MINUS的语法如下:
[SQL 语句 1]
MINUS
[SQL 语句 2]
A minus B就意味着将结果集A去除结果集B中所包含的所有记录后的结果,即在A中存在,而在B中不存在的记录。其算法跟Java中的Collection的removeAll()类似,即A minus B将只去除A跟B的交集部分,对于B中存在而A中不存在的记录不会做任何操作,也不会抛出异常。
与MINUS功能类似的有
第一个
SELECT   表1.*   
FROM     表1,   表2
WHERE    表1.主键=表2.主键(+)  
AND   表2.主键   IS   NULL;
第二个
select   *   from   表1   where  not   exists(select   1   from   表2  where   表1.主键=表2.主键);
第三个
select   *   from   表1   where  表1.主键 not   in (select  主键   from   表2);
当然效率较高的还是MINUS。