PHP,MySQL:如何选择没有RAND的随机记录(试图避免使用RAND())

时间:2012-09-21 17:53:34

标签: php mysql sql random

  

可能重复:
  How to request a random row in 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 - 这没关系。

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

所以我想问你一个方法,我怎么能解决这个例子。

感谢你

1 个答案:

答案 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");