2011-04-22 67 views
2

一个的每个值我使用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排序)。我试图调整,要随机排序,但我无法找到自己满意的东西......

+0

我想你会需要一个程序来做到这一点。我不相信一个查询可以做到这一点。 – Nik 2011-04-22 16:50:42

+0

我对MYSQL语言不是很有经验,你说的程序是什么意思? – pauldid 2011-04-22 17:45:12

+0

存储过程或函数可以获取每个类别,为每个类别获取五条记录,并构建一切结果表。这可能是你最好的选择。你想要的对于单个查询来说非常复杂。 – Nik 2011-04-22 18:13:23

回答

0

我不知道这工作,只是一种预感:

SET @rownum=1; 

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