Sql 将except和Interest转换为左联接和内联接

Sql 将except和Interest转换为左联接和内联接,sql,sql-server,sql-server-2008-r2,Sql,Sql Server,Sql Server 2008 R2,我正在寻找一个软件或框架转换相交和除了左连接和内部连接在sql server。我计划对vertica使用一些查询,因为它没有set运算符 有没有人知道一个框架或smth可以通过编程实现这一点 --编辑: 我有一个疑问: (((SELECT subscriber_id AS MSISDN FROM dbo.a GROUP BY subscriber_id) INTERSECT (SELECT subscriber_id AS MSISDN FROM dbo.

我正在寻找一个软件或框架转换相交和除了左连接和内部连接在sql server。我计划对vertica使用一些查询,因为它没有set运算符

有没有人知道一个框架或smth可以通过编程实现这一点

--编辑:

我有一个疑问:

(((SELECT subscriber_id AS MSISDN 
  FROM   dbo.a 
  GROUP  BY subscriber_id) 
  INTERSECT 
  (SELECT subscriber_id AS MSISDN 
  FROM   dbo.b
  GROUP  BY subscriber_id))
 EXCEPT
 (SELECT msisdn AS MSISDN 
 FROM   dbo.c
 WHERE  balance = 123 
 GROUP  BY msisdn))
我希望将此转换为:

select msisdn from 
(SELECT subscriber_id AS MSISDN 
  FROM   dbo.a 
  GROUP  BY subscriber_id) a
 join  
  (SELECT subscriber_id AS MSISDN 
  FROM   dbo.b
  GROUP  BY subscriber_id) b on a.msisdn = b.msisdn
 left join 
 (SELECT msisdn AS MSISDN 
 FROM   dbo.c
 WHERE  balance = 123 
 GROUP  BY msisdn) c on b.msisdn = c.msisdn
where c.msisdn is null

INTERSECT语句接受表A和表B中存在的任何行,前提是两个表具有相同的元数据

等效的内部联接是联接表A和表B,其中A中的所有字段都等于B中的所有字段

例如,如果A和B有字段:key1和key2以及数据,那么您的查询将如下所示:

SELECT A.key1, A.key2, A.data
INTERSECT
SELECT B.key1, B.key2, B.data;
相当于:

SELECT A.key1, A.key2, A.data
JOIN B ON A.key1 = B.key1
      AND A.key2 = B.key2
      AND A.data = B.data;
另一方面,Exception与A和B应该共享相同的元数据,只是返回的行是A中不存在于B中的任何行(假设您的语句是A Exception B)


等效的左连接是A中所有字段上的左连接B连接到B中的所有字段。

Yea。。我知道这一点。但我正在寻找一个框架或smth来为我做到这一点。啊。。那么,您正在寻找自动为您执行此操作的软件?您可能希望在问题中更好地说明这一点。我这样做了:“有人知道一个框架或smth可以通过编程实现这一点吗?”我建议将您的问题改为“我正在寻找一种自动……的方法”。正如你的问题最初读到的,不清楚你是否熟悉这些陈述之间的区别。事实上,在您添加上面的查询之前,它的内容正好相反。我很抱歉,但我知道没有转换器工具可为您这样做。INTERSECT、EXCEPT和JOIN语法是ANSI SQL的一部分,因此其中一个语法可用,其他语法也可用。你可能很难找到其他面对你处境的人。如果你想写一个程序来帮你做这件事,你可能会运气更好。