2014-10-30 16 views
0

我希望在用户标识(在此) 是在另一个表中的FK表中的用户的选择名称和家庭。我的条件是: 1. [User-Id](在此表中)= [Resume-Owner-Id]在其他表中。 2.行数是从asp程序得到的2值之间。 我写下面的代码。但是这有错误。如何在选择语句中的用户2条件?

SELECT * 
FROM (SELECT Family, 
       Name, 
       Row_number() 
       OVER(
        ORDER BY [User-Id] DESC) AS RowNum 
     FROM [Members-Description-Tbl]) AS People 
WHERE [User-Id] = (SELECT [Resume-Owner-Id] 
        FROM [Resume-Tbl]) 
     AND (RowNum BETWEEN @StartRowIndex + 1 AND @MaxRows); 
+0

你会得到什么错误? – 2014-10-30 10:27:22

+0

说:无效的列名'User-Id'。但是这一栏是有效的。 – 2014-10-30 10:29:05

+0

问题是你错过了在内部查询中选择'User-Id' – 2014-10-30 11:05:44

回答

1

这是您的查询:

Select * 
From (select Family, Name, 
      ROW_NUMBER() OVER (ORDER BY [User-Id] desc) AS RowNum 
     from [Members-Description-Tbl] 
    ) As People 
Where [User-Id] = (select [Resume-Owner-Id] 
        from [Resume-Tbl] 
       ) AND 
     RowNum between @StartRowIndex+1 and @MaxRows 

这样的查询可以得到许多错误 - 变量可能是不确定的,表不存在,不定义的列。

突出的一个潜在错误是where子句中的=。如果子查询返回多个行,则会生成一个错误。简单的解决方案是使用in而不是=

0

感谢您的回答戈登Linoffred。

感谢您的回答Pradeep。

没错。你的回答是对的。但是我的查询再次引发了以前的错误我再次阅读我的查询,并明白我必须编写[People].RowNumRowNum而不是[User-Id]。这现在起作用。再次感谢。 :)