簡體   English   中英

Mysql:'由Rand()限制4的訂單'?

[英]Mysql: 'order by Rand() Limit 4 ' or not?

我需要從最新新聞數據庫中隨機抽取4個項目。

因為該表有很多行。 用RAND()進行排序或浪費資源是否明智?因為它將遍歷整個表並對它重新排序?

有更好的方法嗎? 從具有數百行的表中提取隨機特征項?

例:

$l=$database->query("SELECT car,price,thumbnail FROM cardb WHERE type='new' order by RAND() LIMIT 4");
foreach($l as $l){print_r($l);}

感謝您抽出時間來回答}

好吧...我將在兩個查詢中執行此操作。 獲取隨機行號:

SELECT
    floor(count * rand()) r1,
    floor(count * rand()) r2,
    floor(count * rand()) r3,
    floor(count * rand()) r4
FROM
    (SELECT count(*) count FROM cardb WHERE type = 'new') c

並獲取行:

SELECT car, price, thumbnail FROM cardb WHERE type = 'new' LIMIT {r1}, 1
UNION ALL
SELECT car, price, thumbnail FROM cardb WHERE type = 'new' LIMIT {r2}, 1
UNION ALL
SELECT car, price, thumbnail FROM cardb WHERE type = 'new' LIMIT {r3}, 1
UNION ALL
SELECT car, price, thumbnail FROM cardb WHERE type = 'new' LIMIT {r4}, 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM