我想從預定義值列表中隨機插入值到測試表中。我嘗試使用這個StackOverflow的問題找到了解決辦法:如何將隨機值插入到SQL Server表中?
stackoverflow.com/.../update-sql-table-with-random-value-from-other-table
當我我嘗試這樣做,我所有的「隨機」的價值觀正在插入的是完全對所有3000條記錄是相同的。
當我運行實際上選擇隨機行的查詢部分時,它每次手動運行時都會選擇一個隨機記錄,所以我知道查詢的工作原理。我最好的猜測所發生的事情是:
- SQL Server在某種程度上優化
SELECT
,不允許子查詢更加評估不止一次 - 的隨機值的種子在每個記錄相同的查詢更新
我卡在什麼我的選擇是。我做錯了什麼,還是有另一種方式我應該這樣做?
這是我使用的代碼:
DECLARE @randomStuff TABLE ([id] INT, [val] VARCHAR(100))
INSERT INTO @randomStuff ([id], [val])
VALUES (1, 'Test Value 1')
INSERT INTO @randomStuff ([id], [val])
VALUES (2, 'Test Value 2')
INSERT INTO @randomStuff ([id], [val])
VALUES (3, 'Test Value 3')
INSERT INTO @randomStuff ([id], [val])
VALUES (4, 'Test Value 4')
INSERT INTO @randomStuff ([id], [val])
VALUES (5, 'Test Value 5')
INSERT INTO @randomStuff ([id], [val])
VALUES (6, null)
INSERT INTO @randomStuff ([id], [val])
VALUES (7, null)
INSERT INTO @randomStuff ([id], [val])
VALUES (8, null)
INSERT INTO @randomStuff ([id], [val])
VALUES (9, null)
INSERT INTO @randomStuff ([id], [val])
VALUES (10, null)
UPDATE MyTable
SET MyColumn = (SELECT TOP 1 [val] FROM @randomStuff ORDER BY NEWID())
這個問題可能有用:http://stackoverflow.com/a/9039661/47226 – 2013-04-29 20:33:06