当前位置: 首页 > 面试题库 >

生成一个不在SQL Server表中的随机数

昝涛
2023-03-14
问题内容

我正在寻找生成一个随机数,该随机数不在另一张桌子上。

例如:如果一个表称为randomNums具有值10,20,30,40,50

除上述值外,我还想生成一个数字。

我尝试了以下查询。

询问

;WITH CTE AS
(
    SELECT FLOOR(RAND()*100) AS rn
)
SELECT rn FROM CTE
WHERE rn NOT IN (SELECT num FROM randomNums);

但是有时此查询不返回任何内容。
因为那时候它生成表中存在的数字randomNums

如何解决这个问题?

小提琴供参考


问题答案:

另一个选择,我一直喜欢NEWID()随机排序,并且交叉联接非常有效地创建了许多行:

;with cte AS (SELECT 1 n UNION ALL SELECT 1)
     ,cte2 AS (SELECT TOP 100 ROW_NUMBER() OVER(ORDER BY a.n) n
               FROM cte a,cte b,cte c,cte d, cte e, cte f, cte g)
SELECT TOP 1 n
FROM cte2 a
WHERE NOT EXISTS (SELECT 1
                  FROM randomNums b
                  WHERE a.n = b.num)
ORDER BY NEWID()

演示:SQL Fiddle



 类似资料:
  • 问题内容: 我对Swift和编程逻辑很陌生,所以请耐心等待 如何在Swift中生成0到9之间的随机数而不重复最后生成的数字?因为相同的数字不会连续出现两次。 问题答案: 将先前生成的数字存储在变量中,然后将生成的数字与先前的数字进行比较。如果它们匹配,则生成一个新的随机数。重复生成新数字,直到它们不匹配为止。

  • 问题内容: 我在这里有一些东西,但是我无法按照自己的喜好工作: 上面的位生成数字,但是它们可以相同。下面的代码可以解决此问题,但不能,但是似乎可以减少这种可能性: 很明显,它只是打印它们。 问题答案: 您可以用来从可迭代对象中获取任意数量的唯一“随机”项-无需使用嵌套循环:

  • 本文向大家介绍如何生成一个随机数?相关面试题,主要包含被问及如何生成一个随机数?时的应答技巧和注意事项,需要的朋友参考一下  

  • 问题内容: 我将如何列出N个(例如100个)随机数,使其总和为1? 我可以用 我将如何修改此列表,使其总数为1(这是用于概率模拟)。 问题答案: 实际上,最简单的解决方案是采用N个随机值并除以和。 一种更通用的解决方案是使用Dirichlet发行版 http://en.wikipedia.org/wiki/Dirichlet_distribution (可在numpy中获得)。 通过更改分布的参数

  • 问题内容: 我正在尝试在Java中生成盐,以与用于安全密码存储的哈希算法配合使用。我正在使用以下代码创建随机盐: 这应该生成一个完全安全的,随机生成的盐,以用于我的哈希算法。但是,当我运行代码时,每次都会输出相同的盐…表示生成的盐根本不是随机的。 出于明显的安全性目的,每个用户都需要一个唯一的符号,但是如果我每次创建一个新帐户时都使用此代码,则每个用户都将具有相同的符号,这一开始就破坏了它的用途。

  • 问题内容: 我想在0-500范围内创建10个随机数。但是问题是我希望这些数字是唯一的。对于2个随机数,我可以创建以下内容: 但是,如果我这样做10次,我认为它会堆叠。我之所以这样说是因为我正在尝试创建一个巨大的算法,该算法试图进行连续评估,我希望连续获取10个随机且唯一的数字。我不知道该怎么办。有什么想法或建议吗? 问题答案: 每当您使用Fisher-Yates shuffle 来使用数字时,请从