好的,基本上需要的是一种在使用大量连接时使用行号并使用这些rownumber的where子句的方法。
,例如
select ADDRESS.ADDRESS FROM ADDRESS
INNER JOIN WORKHISTORY ON WORKHISTORY.ADDRESSRID=ADDRESS.ADDRESSRID
INNER JOIN PERSON ON PERSON.PERSONRID=WORKHISTORY.PERSONRID
WHERE PERSONRID=<some number> AND WORKHISTORY.ROWNUMBER=1
虽然需要在该表上为此查询生成ROWNUMBER。因此,如果我们想要访问第二个WORKHISTORY记录的地址,我们可以去WORKHISTORY.ROWNUMBER=2
,如果我们有两个匹配的地址,我们可以使用ADDRESS.ROWNUMBER=1
和{循环遍历一个WORKHISTORY记录的地址{1}}
这应该是一个自动生成的查询。因此,为了进入相关表,可能有超过10个内连接,并且我们需要能够独立于其余表循环遍历每个表的记录。
我知道有RANK和ROWNUMBER函数,但我没有看到它对我的影响因为所有的内连接
注意:在此示例查询中,应自动生成ROWNUMBER!它永远不应该存储在实际的表中
答案 0 :(得分:1)
你能使用临时表吗?
我问,因为你可以写这样的代码:
select a.field1, b.field2, c.field3, identity (int, 1,1) as TableRownumber into #temp
from table1 a
join table2 b on a.table1id = b.table1id
join table3 c on b.table2id = c.table2id
select * from #temp where ...