Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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 Mysql随机选择行到n次_Php_Mysql_Random - Fatal编程技术网

Php Mysql随机选择行到n次

Php Mysql随机选择行到n次,php,mysql,random,Php,Mysql,Random,我想从我的表中随机获得3条记录,每次90次 情景 user_id number_of_bids 12 20 8 40 6 30 我想要的是…以随机顺序将以上3行设置为一个特定的数字,事实上它是sum(number of bids) 每一行的重复次数不应超过其投标数量 我已经创建了一个查询,其中我将获得投标数量。现在需要进行第二次查询,其中这3条记录应以随机顺序进行投标数量

我想从我的表中随机获得3条记录,每次90次

情景

  user_id     number_of_bids 
    12              20
     8               40
     6               30
我想要的是…以随机顺序将以上3行设置为一个特定的数字,事实上它是
sum(number of bids)

每一行的重复次数不应超过其投标数量

我已经创建了一个查询,其中我将获得
投标数量
。现在需要进行第二次查询,其中这3条记录应以随机顺序进行
投标数量
次数的求和,并且每条记录的重复次数不应大于其投标数量

我不确定一次查询能否完成。但你们是专家,我相信你们可以帮助我。这将节省我的执行时间。。
谢谢..

我只想用行构建一个数组并将其洗牌:

$stmt = $db->query('SELECT user_id, number_of_bids FROM table_name', PDO::FETCH_KEY_PAIR);
$results = array(); $startIndex = 0;
foreach ($stmt as $userId => $numberOfBids) {
    $results += array_fill($startIndex, $numberOfBids, $userId);
    $startIndex += $numberOfBids;
}
shuffle($results);

然后,您可以随意迭代
$results

您真的需要这么多行吗?如果您只是想以随机加权顺序获取用户\u id,以便根据\u出价的数量更可能出现在顶部,那么您可以查看如下加权结果:是的,因为我正在尝试编写一个cron作业,该作业将以随机顺序进行出价。因此,我不希望任何用户错过他的出价。此数组将包含90记录?$results也不应该是$results=array()@AsifAsghar你的意思是基于你问题中给定的表格?是的,它应该是。@AsifAsghar“而且$results不应该是$results=array();”。。你这是什么意思?谢谢。我已经在你的代码的帮助下弄明白了。但这不可能仅仅通过查询实现。据我所知,MySQL不太适合做这样的事情。