我希望从我的桌子中获得3次随机记录到90次。
方案
user_id number_of_bids
12 20
8 40
6 30
我想要的是......以随机顺序获得3行以上的特定数字实际上它是sum(number_of_bids)
...
每行不应重复超过其出价数量。
我创建了一个查询,其中我得到number_of_bids
的总和。现在需要第二个查询,其中这3个记录应按随机顺序排列到sum(number_of_bids)
次,并且每个记录的重复次数不应超过其number_of_bids
。
不确定是否可以在一个查询中实现。但是你们是专家我相信你们可以帮助我。它会节省我的执行时间.. 感谢..
答案 0 :(得分:1)
我只是从行中构建一个数组并将其洗牌:
$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
但是你想要。