0

可能重复:
如何在 SQL 中请求随机行?

由于表很大,我无法使用 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- 没关系。

问题带来了带有$idand的行$id2- 因为使用了最小和最大 ID 值,但是 PHP 函数rand()会在最小值和最大值之间取一些随机值 - 并且很有可能挑选出的记录不属于category_id.

所以我想问你一个方法,我该如何解决这个例子。

谢谢你

4

1 回答 1

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");
于 2012-09-21T18:07:53.643 回答