我想向使用Microsoft SQL Server 2008 R2的T-SQL的查询中的列添加一个随机值。为了做到这一点,我使用了一个子查询并抽出一个随机记录。每次运行查询时,它都会提取一个新的随机记录,但每行的值是相同的。使用子查询来拉取随机值,每次都显示相同的值
如何为每一行获得新的随机值?
样品查询:
SELECT column1,
(SELECT TOP 1 column1 as c2 FROM Table2 ORDER BY NewID())
FROM Table1
而表2的样子
column1
value1
value2
value3
它总是返回列2相同的值,而不是为每个表一个新的随机记录。
首先运行:
column1, c2
1, value1
2, value1
3, value1
第二轮:
column1, c2
1, value2
2, value2
3, value2
我怎样才能获得C2(子查询)拉为每行一个新的随机记录?
理想的方案:
column1, c2
1, value2
2, value1
3, value2
您可能需要引用外部查询,以便SQL Server认为它是相关的。这将是非常低效的。这里有什么要求? – 2011-04-04 16:00:54
什么是SQL Server 2010? – 2011-04-04 16:01:18
谢谢@PeterSchofield,我的意思是2008年r2。 – Lucas 2012-04-01 02:52:31