Sql 如何在select语句中使用user 2条件?

Sql 如何在select语句中使用user 2条件?,sql,sql-server,tsql,stored-procedures,Sql,Sql Server,Tsql,Stored Procedures,我希望在一个表中选择用户名和用户族,该表中的用户Id为 FK在另一个表中。我的条件是: 1.此表中的[用户Id]=其他表中的[恢复所有者Id]。 2.行号介于从asp程序获取的2个值之间。 我写下面的代码。但这是错误的 SELECT * FROM (SELECT Family, Name, Row_number() OVER( ORDER BY [User-Id

我希望在一个表中选择用户名和用户族,该表中的用户Id为 FK在另一个表中。我的条件是: 1.此表中的[用户Id]=其他表中的[恢复所有者Id]。 2.行号介于从asp程序获取的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 ); 
这是您的查询:

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而不是=。

感谢您的回答Gordon Linoffred

谢谢你的回答


对。你的答案是对的。但我的问题再次出现了先前的错误。我再次阅读了我的查询,并理解我必须编写[People].RowNum或RowNum而不是[User Id]。现在可以了。再次感谢

出现了什么错误?例如:列名“用户Id”无效。但此列有效。问题是在内部查询中选择“用户Id”时遗漏了