由于一个庞大的表,我无法使用MySQL函数RAND()
并试图避免以这种方式使用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
。
所以我想问你一个方法,我怎么能解决这个例子。
感谢你
答案 0 :(得分:3)
你可以试试这个:
$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");