Mysql选择随机行n次

时间:2014-12-09 06:30:21

标签: php mysql random

我希望从我的桌子中获得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

不确定是否可以在一个查询中实现。但是你们是专家我相信你们可以帮助我。它会节省我的执行时间..     感谢..

1 个答案:

答案 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但是你想要。