SQL Server 中关于EXCEPT和INTERSECT的用法以及 OPENQUERY连接Oracel比较

熟练使用SQL Server中的各种用法会给查询带来很多方便。今天就介绍一下EXCEPT和INTERSECT。注意此语法仅在SQL Server 2005及以上版本支持。

EXCEPT是指在第一个集合中存在,但是不存在于第二个集合中的数据。

INTERSECT是指在两个集合中都存在的数据。

通过INTERSECT比较oracle与sql server2005中两个表数据的都存在的数据。然后删除MsSQL中已经存在Oracle中的数据
delete from dbo.Test_ProDetailTable where Pro002 in(
SELECT  bar_code FROM OPENQUERY(MYSAP,
   'SELECT bar_code FROM ZSDSS_BAR_CODE_DATA') a
--except
INTERSECT
SELECT  Pro002 FROM dbo.Test_ProDetailTable)


而Oralce中是没有EXCEPT看下面


Oracle中

MINUS 指令是运用在两个 SQL 语句上。它先找出第一个 SQL 语句所产生的结果,然后看这些结果有没有在第二个 SQL 语句的结果中。如果有的话,那这一笔资料就被去除,而不会在最后的结果中出现。如果第二个 SQL 语句所产生的结果并没有存在于第一个 SQL 语句所产生的结果内,那这笔资料就被抛弃。

 

SQLSERVER中

EXCEPT运算符返回由EXCEPT运算符左侧的查询返回、而又不包含在右侧查询所返回的值中的所有非重复值。

 

(与MINUS指令的一样)

 

ORACLE与SQLSERVER都有

INTERSECT返回由INTERSECT运算符左侧和右侧的查询都返回的所有非重复值。


你可能感兴趣的:(SQL Server 中关于EXCEPT和INTERSECT的用法以及 OPENQUERY连接Oracel比较)