使用以前的左连接加入视图而不是乘以行

时间:2010-07-27 15:13:14

标签: sql-server-2008 join views

我有两种形式的观点:

--View1
SELECT foo.id AS id FROM foo LEFT JOIN bar ON foo.id = bar.id
--Results
id
 1
 1
 1
 2
 2
 ...


--View2
SELECT foo.id AS id FROM foo LEFT JOIN manchu ON foo.id = manchu.id
--Results
id
 1
 1
 1
 2
 2
 ...

现在我想加入两个视图,以便View1中的第1行连接到View2的第1行。

如果我加入View1.id = View2.id,那么行将相互相乘,这不是我想要的。 有没有办法可以为每个视图添加一个列,并且我可以加入一个唯一的编号?还是另一种解决方案?

提前致谢。

2 个答案:

答案 0 :(得分:1)

在两个视图中使用SELECT DISTINCT id而不是SELECT id,并在View1.id = View2.id上加入它们。在这种情况下,你将有 ID
1
2

如果您需要不同的结果,请在您的问题中指明您想要获得的确切内容。

答案 1 :(得分:1)

您可以在每个视图中将以下内容添加为列:

ROW_NUMBER() over (order by id) as sequence

您的视图加入将为View1.sequence = View2.sequence

但是,你的意图仍然不清楚。您似乎希望在每个视图中加入第1行,并在每个视图中加入第2行等。根据您向我们展示的内容,您的查询不保证重复ID值的行序列。