Mysql选择概率和条件

时间:2014-09-25 18:51:52

标签: mysql select conditional-statements

我有一个名为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的行中只获得一个随机条目?

0 个答案:

没有答案