2011-06-23 58 views
0

我需要一些帮助写SELECT查询基本上我已经表如下结构:如何选择每个类别的3个随机项目?

 
cat_prod 
---------- 
cid | pid 
---------- 
1 | 1 
2 | 2 
3 | 3 
4 | 4 
5 | 5 
1 | 2 
2 | 3 
3 | 4 
4 | 5 
5 | 1 
1 | 3 
2 | 4 
3 | 5 
4 | 1 
5 | 2 


现在我想如果低于它存在的或最大PID的选择每个CID的至少3点随机PID的3,我将如何做一个查询?考虑到这一点,我希望查询尽可能高效,并且表格数据可能会增长很快。

感谢

+0

这[文章](http://akinas.com/pages/en/blog/mysql_random_row/ )可能会有所帮助。 – Rasika

+0

看看这个问题http://stackoverflow.com/questions/31495446/how-to-get-random-records-from-each-category-in-mysql/31496011?noredirect=1#comment50972156_31496011 –

回答

0

虽然可能需要一些变化,下面的查询几乎是适当的:

select C.cid, C.pid 
from cat_prod C 
where C.pid in (select c1.pid from cat_prod c1 order by (pid) limit 3); 
+0

随机化,在那里:) – Mattis

+0

嗨,感谢您的快速反应,它没有为我工作我得到一个错误:这个版本的MySQL还不支持'LIMIT&IN/ALL/ANY/SOME子查询'有没有办法重写这个? 谢谢 – Dino