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 </wbr> 表1.* </wbr> </wbr>
FROM </wbr> </wbr> 表1, </wbr> 表2
WHERE </wbr> </wbr>表1.主键=表2.主键(+) </wbr>
AND </wbr> 表2.主键 </wbr> IS </wbr> NULL;
第二个
select </wbr> * </wbr> from </wbr> 表1 </wbr> where </wbr>not </wbr> exists(select </wbr> 1 </wbr> from </wbr> 表2 </wbr>where </wbr> 表1.主键=表2.主键);
第三个
select </wbr> * </wbr> from </wbr> 表1 </wbr> where </wbr>表1.主键 not </wbr> in (select </wbr>主键 </wbr> from </wbr> 表2);
当然效率较高的还是MINUS。