首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用随机子集查询的MySQL动态查询

使用随机子集查询的MySQL动态查询
EN

Stack Overflow用户
提问于 2013-08-01 23:17:36
回答 1查看 109关注 0票数 0

我有一个事件数据库。每个事件都有一个等级(1-5)。我想按日期范围查询数据库中的事件,我想选择一组排名为1的随机事件,然后选择一组排名为2的随机事件,依此类推。

这个查询给了我一个随机选择的排名1的事件:

代码语言:javascript
复制
SELECT * FROM
(
SELECT * FROM  `events` 
WHERE  `date` >1326578956 
AND `date`<1326870399 
AND `rank`=1 
ORDER BY RAND()
) 
e LIMIT 0,10

但可能有这样的情况,即没有排名为1或排名2的事件。

是否可以只使用MYSQL查询。我可以使用PHP迭代查询,用结果填充数组,但我认为如果可能的话,用MYSQL来完成这一切会更优雅。

谢谢,

艾伦。

EN

回答 1

Stack Overflow用户

发布于 2013-08-01 23:24:27

猛烈抨击一下这个:

代码语言:javascript
复制
select *
from
(
SELECT * FROM  `events`  WHERE  `date` >1326578956  AND `date`<1326870399  AND `rank`=1  ORDER BY RAND() LIMIT 10
union all
SELECT * FROM  `events`  WHERE  `date` >1326578956  AND `date`<1326870399  AND `rank`=2  ORDER BY RAND() LIMIT 10
union all
SELECT * FROM  `events`  WHERE  `date` >1326578956  AND `date`<1326870399  AND `rank`=3  ORDER BY RAND() LIMIT 10
union all
SELECT * FROM  `events`  WHERE  `date` >1326578956  AND `date`<1326870399  AND `rank`=4  ORDER BY RAND() LIMIT 10
union all
SELECT * FROM  `events`  WHERE  `date` >1326578956  AND `date`<1326870399  AND `rank`=5  ORDER BY RAND() LIMIT 10
) e
order by e.rank
limit 10;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17998032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档