我想从预定义值列表中随机插入值到测试表中。我尝试使用这个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