我想在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只適用於立即,下一個語句 –