使用子查询来拉随机值每次都会显示相同的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用子查询来拉随机值每次都会显示相同的值相关的知识,希望对你有一定的参考价值。

我想使用T-SQL for Microsoft SQL Server 2008 R2向查询中的列添加随机值。为此,我使用子查询并拉随机记录。每次运行查询时,它都会提取一个新的随机记录,但每行的值都是相同的。

如何为每行获取新的随机值?

示例查询:

SELECT column1,
    (SELECT TOP 1 column1 as c2 FROM Table2 ORDER BY NewID())
FROM Table1

而table2看起来像

column1
value1
value2
value3

它始终为column2返回相同的值,而不是每个表的新随机记录。

第一次运行:

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
答案

尝试:

SELECT column1,
    (SELECT TOP 1 column1 as c2 FROM Table2 WHERE Table1.column1 IS NOT NULL ORDER BY NewID())
FROM Table1
另一答案

你可以试试

SELECT T1.column1,
    (SELECT TOP 1 column1 as c2 FROM Table2 ORDER BY NewID(), LEN(T1.column1))
FROM Table1 T1

强制它每次重新评估选择。但这将是非常低效的。也非常脆弱(没有LEN它不起作用!)它是否满足你的要求,随机排序一次T2值(或者如果Table1大于Table2可能更多)然后通过row_number加入?

我可以通过这些方法看到的主要区别是,您当前的方法将允许多次选择相同的随机行,而我提出的方法不会。

以上是关于使用子查询来拉随机值每次都会显示相同的值的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 ViewPager 显示相同的片段,但每次加载不同的数据?

更改的值不会显示在 Dom 中

如何根据四个可能的值生成随机 SKSpriteNode

RNG 函数 C++

sql 问题子查询返回的值不止一个。

随机函数RND使用