Sql 如何在select语句中使用user 2条件?
我希望在一个表中选择用户名和用户族,该表中的用户Id为 FK在另一个表中。我的条件是: 1.此表中的[用户Id]=其他表中的[恢复所有者Id]。 2.行号介于从asp程序获取的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
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”时遗漏了