Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我们如何从最小值和最大值中得到两个随机值,但间距为500?_Php_Mysql - Fatal编程技术网

Php 我们如何从最小值和最大值中得到两个随机值,但间距为500?

Php 我们如何从最小值和最大值中得到两个随机值,但间距为500?,php,mysql,Php,Mysql,所以我有一个数据库表,它有超过80000行。不幸的是,我的查询使用了orderbyrand(),我开始发现它会影响CPU。我决定删除orderbyrand(),而是使用php生成一个随机数,如id>=500(随机值)&&id: $min = rand(500, $max_id); 然后在生成的数字上加500以获得最大值: $min = rand(500, $max_id); $max = $min + 500; 要确保您的$max编号不大于80000($max\u id),请执行一个if语句

所以我有一个数据库表,它有超过80000行。不幸的是,我的查询使用了
orderbyrand()
,我开始发现它会影响CPU。我决定删除
orderbyrand()
,而是使用php生成一个随机数,如
id>=500(随机值)&&id:

$min = rand(500, $max_id);
然后在生成的数字上加500以获得最大值:

$min = rand(500, $max_id);
$max = $min + 500;
要确保您的
$max
编号不大于80000(
$max\u id
),请执行一个if语句:

  $max_id = 80000;
  $min = rand(500, $max_id);
  $max = $min + 500;
  if($max > $max_id)
   {
        $max = $min;
        $min = $min - 500;
   }
这样试试

$max_id  = total rows in your table;
$max_val = $max_id-500;
$start   = rand(1, $max_val);
$sql     = "SELECT * FROM tbl_name LIMIT $start , 500";

这并没有考虑到表格的大小。为什么不在第一步从最大值中减去间隙?最后不要检查它。@antom。这意味着,如果他在where子句
id>=(随机值)&&id中这样做,他将使用random和max=min+500计算min。如果他生成的最小值为70500,则最大值为80000。其实最下面的答案是关于它的,我在写评论的时候并没有看到它。嘿,这正是我想要的!我认为结尾有一个拼写错误,if语句$min-should=$max-500;否则$min的值可能会低于最小的id。再次感谢,你太棒了!可能有一个MySQL的声明,在MySQL中更精明的人可以想出,而不是100%依赖php。除了基本的东西,我在mysql方面并不是很先进,所以聪明的人不是我。。。。
$max_id  = total rows in your table;
$max_val = $max_id-500;
$start   = rand(1, $max_val);
$sql     = "SELECT * FROM tbl_name LIMIT $start , 500";