可能重复:
Simple update statement so that all rows are assigned a different value选择一个随机值T-SQL
有没有一种方法可以选择从一个子查询的随机值(如颜色)?这里是我试过,但让在每次运行相同的值:
SELECT TOP (100) ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS ID,--Sequential number from 1 to ..
(SELECT TOP 1 color
FROM (VALUES (0, 'Red'),
(1, 'Green'),
(2, 'Yellow')) colors(id, color)
ORDER BY NEWID()) AS RandomColor
FROM sys.all_columns ac1
CROSS JOIN sys.all_columns ac2
但如果我单独运行这一块,我得到不同的颜色:
SELECT TOP 1 color
FROM (VALUES (0, 'Red'),
(1, 'Green'),
(2, 'Yellow')) colors(id, color)
ORDER BY NEWID()
您需要使子查询相关,以便对每行重新评估。 'WHERE COALESCE(ac1.object_id,ac2.object_id,ac1.column_id,ac2.column_id)不是NULL ORDER BY NEWID()'似乎是为我做的。 –