gpt4 book ai didi

MySQL动态查询与随机子集查询

转载 作者:行者123 更新时间:2023-11-30 01:25:54 25 4
gpt4 key购买 nike

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

此查询为我提供了排名 1 事件的随机选择:

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 来完成这一切会更加优雅。

谢谢

艾伦。

最佳答案

给它一个重击:

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;

关于MySQL动态查询与随机子集查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17998032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com