内部加入所有孩子top(n)父母

时间:2014-12-15 09:00:44

标签: sql sql-server select join

我需要做一个内部联接,在那里我得到具体数量的"父元素"但是它的所有关系。

如果我有表格代理:

IdAgent | Name
     1  |      Agent1
     2  |     Agent2

表Econ

IdEcon IdAgent Number
1 |      1 | number1
2 |      2 | number21
3 |      2 | number22
4 |      2 | number23

所以,如果我做了:

SELECT * FROM Agent LEFT JOIN Econ 

我会获得4行

IdAgent | Name | IdEcon IdAgent Number
1 | Name 1 | 1 |      1 | number1
2 | Name 2 | 2 |      2 | number21
2 | Name 2 | 3 |      2 | number22
2 | Name 2 | 4 |      2 | number23

但如果我做了:

SELECT top(2) * FROM Agent LEFT JOIN Econ

我将获得2行,我想要4行(我希望前2只能影响表格代理)

我该如何实现?

2 个答案:

答案 0 :(得分:2)

未测试:

SELECT * FROM (Select top(2) * FROM Agent) LEFT JOIN Econ

答案 1 :(得分:1)

您可以单独选择前两个代理,并将结果用作派生表加入Econ,如jarlh's answer中所示,或者您可以将TOP (2) WITH TIES与{{1}一起使用}}:

ORDER BY Agent.IdAgent