我想根据点击次数在我的网站上显示趋势广告。
我的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