从数据库中选择前10行,然后随机显示结果



我想根据点击次数在我的网站上显示趋势广告。

我的SQL查询看起来像这样:

  SELECT  ad_id, clicks from ads ORDER BY  clicks DESC LIMIT 5
Result:
ad_id   clicks
3393    2204
4495    1208
2399    932
2780    777
3316    679

我想每个时间页面刷新随机显示此结果。

我尝试使用

SELECT  * from ads ORDER BY  clicks DESC, RAND() LIMIT 10

但每次在页面刷新时都无法做到相同的结果。

如果我使用:

SELECT  ad_id, clicks from ads ORDER BY RAND(), clicks DESC LIMIT 10
ad_id   clicks
9762    0
6305    1
4040    17
11598   0
11347   0

它正在随机显示数据,但现在最多的点击次数为零。

您可以建议我如何在每个页面上随机显示顶部点击。

如果要获得前10行,然后以随机顺序显示它们,请使用以下方式:

select *
from (
    select *
    from ads
    order by clicks desc LIMIT 10
    ) t
order by rand() desc

如果您想以降序的单击顺序获得10个随机选择的记录,请尝试以下操作:

select *
from (
    select *
    from ads
    order by RAND() LIMIT 10
    ) t
order by clicks desc

它在子查询中找到10个随机记录,然后对其进行分类。

或者您想从某些顶部获得10个随机记录,例如100,行以降序的点击顺序排序:

select *
from (
    select *
    from (
        select *
        from ads
        order by click desc LIMIT 100  -- change this as per your needs
        ) t
    order by rand() limit 10
    ) t
order by clicks desc

相关内容

最新更新