2017-03-04 68 views
0

我想根據點擊次數在我的網站上顯示趨勢廣告。從數據庫中選擇前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 

據數據顯示隨機,但現在最高點擊數爲零。

你能否告訴我如何在每個頁面刷新時隨機顯示最高點擊結果。

回答

1

如果你想獲得前10行,然後以隨機順序顯示出來,使用這樣的:如果你想在遞減點擊排序10個隨機選擇的記錄

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

,試試這個:

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 
+0

感謝您迴應,但它無法正常工作。它在隨機行中選擇隨機行,並在頂部點擊頂部。不選擇前10次點擊 –

+0

完美的工作正常,如果我從100次點擊中選擇出來,它會隨機給我10個最好的結果。但是,如果我只想選擇前10個點擊並隨機顯示,則每次都會顯示相同的結果。 –

+0

@Kritika - 新增了。查看第一個查詢。 – GurV