Php Mysql随机选择行到n次
我想从我的表中随机获得3条记录,每次90次 情景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条记录应以随机顺序进行投标数量
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不太适合做这样的事情。