我想在SQL Server的while循环中逐一选择行。我正在使用我知道的唯一方法来使用ROW_NUMBER
函数来选择下一行。但我也必须在同一个SELECT
语句中为t-sql变量赋值,因此我收到以下错误;SELECT赋值语句中的下一行?
将一个值赋给变量的SELECT语句不能与数据检索操作结合使用 。
无论如何,我的代码是这样的;
WHILE (@i < 5)
BEGIN
SELECT -- This is where the error occurs
@resultId = video.id, -- this is the value assigning i need to do
ROW_NUMBER() OVER (ORDER BY dateAdded DESC) AS ROWID
FROM videoTest.dbo.video
LEFT JOIN videoTest.dbo.aspnet_Users
ON video.userId=aspnet_Users.UserId
WHERE [email protected] AND ROWID = @i
-- Processing @resultId
SELECT
compilationId
FROM videoTest.dbo.comp
WHERE vidId = @resultId -- i need the id from above
....
....
.....
......
@i = @i + 1
END
我将不胜感激,如果你能告诉我的方式没有得到这个错误,或者解决这个错误在我当前的代码的方式来选择以另一种方式旁边。 谢谢。
代码继续从那里,我用这5个不同的视频ID的抱歉误解。我认为这就是我期待的让我抓住机会的感谢! – umutto
对不起,以前不够清楚,但我实现了你的代码,但没有找到一种方法来访问video.id在后面的语句。有了CTE,您可以将video.id作为变量保存以备将来使用?我以后需要@resultId进程,我已经更新了我的代码以满足我的需求。谢谢! – umutto
@umutto:如果你以后需要它,你需要将它填充到一个表变量 - CTE只适用于立即,下一个语句 –