可能的重复项:
如何在SQL中请求随机行?
由于表很大,我无法RAND()
使用MySQL函数,并试图避免以这种方式使用RAND()
:
$a = mysql_fetch_array(mysql_query("SELECT MIN(id), MAX(id) FROM table WHERE category_id='".$var."'"));
$id = rand($a[0],$a[1]);
$id2 = rand($a[0],$a[1]);
这不起作用,因为:在$a
中,我有最大和最小的 ID 和各自的category_id
- 没关系。
该问题带来了具有 $id
和 $id2
的行 - 因为使用了最小和最大 ID 值,但 PHP 函数rand()
会在最小值和最大值之间取一些随机值 - 并且很有可能,挑选出来的记录将不属于category_id
。
所以我想问你一种方法,我该如何解决这个例子。
谢谢
你可以试试这个:
$row = mysql_fetch_assoc(
mysql_query(
"SELECT count(*) as count FROM table WHERE category_id='$var'"));
$randomrow = rand(0, $row['count'] -1);
$q = mysql_query("
SELECT * FROM table
WHERE category_id='$var'
LIMIT 1 OFFSET $randomrow");