我正在嘗試編寫一個函數,用於從表中選擇一組行並隨機返回其中之一。該函數的第一步創建並填充本地表變量,該變量包含合適的行ID。該表定義如下:使用SQL Server中的函數返回一個隨機的行號
DECLARE @SuitableID TABLE (
Id INT
)
此表可以容納任意數量的ID。該函數需要隨機返回其中之一,但我無法找到如何去做。我已經試過如下:
DECLARE @ReturnedID INT
SELECT TOP 1 @ReturnedID = Id
FROM @SuitableID
ORDER BY NEWID()
返回一個錯誤:
Invalid use of a side-effecting operator 'newid' within a function.
TAMPLESAMPLE也似乎不工作:
SELECT @ReturnedID = Id
FROM @SuitableID
TABLESAMPLE (1 ROWS)
我覺得這個語法是正確的,但我的數據庫不同意。
Incorrect syntax near the keyword 'TABLESAMPLE'.
我在做什麼錯,我該如何執行我想要的操作?
檢查這個問題:https://stackoverflow.com/questions/772517/newid-inside-sql-server-function –