我有两种形式的观点:
--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,那么行将相互相乘,这不是我想要的。 有没有办法可以为每个视图添加一个列,并且我可以加入一个唯一的编号?还是另一种解决方案?
提前致谢。
答案 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值的行序列。