【发布时间】:2010-11-30 21:20:19
【问题描述】:
我正在尝试将预定义值列表中的值随机插入到表中以进行测试。我尝试使用在这个 StackOverflow 问题上找到的解决方案:
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())
【问题讨论】:
-
这个问题/答案可能有用:stackoverflow.com/a/9039661/47226
标签: sql sql-server tsql random