如何从SQL表中提取随机记录?

时间:2012-03-07 21:18:36

标签: sql random

我有一个有两个整数的SQL表。让这些整数为a和b。

我想选择一个随机记录,以便选择记录的概率与C + a / b成比例,我将选择一些常数C.

因此,例如,如果C = 0,并且有两个记录,其中a = 1,b = 2且a = 2,b = 3,那么我们对于第一个记录C + a / b = 1 / 2,对于第二个记录C + a / b = 2/3,因此概率为0.3我将选择第一个记录,概率0.7我将从该SELECT查询中选择第二个记录。

我很了解SQL(我想),但我不确定从哪里开始。我想首先选择“SUM(a / b)”,然后对第一个记录进行选择,C + a / b之和直到它超过C * number_of_records + SUM之间的随机数(a / b)第一次。但是,我真的不知道该怎么做。

1 个答案:

答案 0 :(得分:2)

你可以做一些事情,比如按随机数乘以你的其他东西进行排序,然后从该查询中选择前1位 - 如:

SELECT TOP 1 (your column names)
FROM (your table)
ORDER BY Rand() * (your calculation)