Sql 将except和Interest转换为左联接和内联接
我正在寻找一个软件或框架转换相交和除了左连接和内部连接在sql server。我计划对vertica使用一些查询,因为它没有set运算符 有没有人知道一个框架或smth可以通过编程实现这一点 --编辑: 我有一个疑问: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.
(((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的一部分,因此其中一个语法可用,其他语法也可用。你可能很难找到其他面对你处境的人。如果你想写一个程序来帮你做这件事,你可能会运气更好。