为一个给定字段的每个值获取多个随机值

时间:2011-04-22 16:48:48

标签: mysql random

我使用 MySql ,我有一个类似的表:

  

| id |类别|场1 |第2场|

类别字段中的值不是唯一的。

我想为每个类别值获取5个随机

我无法在一个查询中找到解决方案。

你能帮我解决这个问题吗?

谢谢

编辑: 我发现了这个:

SELECT  t.*
FROM    (
        SELECT  @lim := 5,
                @cg := -1
        ) vars,
        table_example t
WHERE   CASE WHEN @cg <> category THEN @r := @lim ELSE 1 END > 0
        AND (@r := @r - 1) >= 0
        AND (@cg := category) IS NOT NULL
ORDER BY
        category , id

但在这种情况下,它为每个类别值提取5行(但它按id排序)。我试图调整它来随机订购,但我找不到令人满意的......

1 个答案:

答案 0 :(得分:0)

我不确定这是否有效,只是预感:

SET @rownum=1;

SELECT t.id,CASE WHEN @rownum > 5 THEN @rownum:=0 ELSE @rownum=@rownum+1 
FROM table_example t WHERE @rownum<=5 GROUP BY t.category,t.id ORDER BY RAND()