我有一个名为words
的mysql表,其中包含score
列,其值范围为0到3(小数有效)。
如何选择50个单词,其中70%有score
> 2.14和score
< 3,20%score
> 1.08和score
< = 2.14,最后,10%score
< = 1.08?
提前致谢
编辑:我已经设法真正关闭,但我仍然遗漏了一些东西。这是我的问题:
SELECT
palabra4.*, rndview.rndFactor, FLOOR(palabra4.factor)
FROM
palabra4
JOIN (
SELECT
CASE
WHEN aleatorio < 0.1 THEN 1
WHEN aleatorio < 0.8 THEN 3
ELSE 2
END as rndFactor
FROM
(SELECT @rnd:=rand() as aleatorio FROM palabra4 LIMIT 10) AS rndinit
) AS rndview ON rndview.rndFactor=FLOOR(palabra4.factor)
GROUP BY palabra4.id
ORDER BY rand() LIMIT 10
我会逐节解释:
SELECT @rnd:=rand() as aleatorio FROM palabra4 LIMIT 10
以上代码返回0和1之间10个随机数的列表。
SELECT
CASE
WHEN aleatorio < 0.1 THEN 1
WHEN aleatorio < 0.8 THEN 3
ELSE 2
END as rndFactor
FROM
(SELECT @rnd:=rand() as aleatorio FROM palabra4 LIMIT 10) AS rndinit
这将返回10个数字的列表,根据指定的概率,这些数字只能是1,2或3。 但是,当我加入它时,只需要进行所有比赛。如何在每个rndview的行中只获得一个随机条目?