Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

PHP MySQL seleciona linhas aleatórias


A melhor maneira que encontrei para selecionar qualquer número de registros aleatórios é com OFFSET na consulta.

Digamos que você queira 6 registros aleatórios, então vou pegar emprestado de uma resposta acima e contar o número total de amigos no banco de dados.
$sql = mysql_query("SELECT COUNT(*) AS total FROM friends WHERE member_id='". $_SESSION['userid'] ."'");

$get_count = mysql_fetch_array($sql); // Fetch the results

$numfriends = $get_count['total']; // We've gotten the total number

Agora vamos obter os 6 registros aleatórios do total acima (espero que seja> 6),
$query = mysql_query("SELECT * FROM friends WHERE member_id='". $_SESSION['userid'] ."' LIMIT 6 OFFSET " . (rand(0, $numFriends));


while ($rows = mysql_fetch_array($query))
{
  /// show your $rows here
}

Usar o OFFSET pode não ser o melhor ou mais eficiente, mas funcionou para mim em grandes bancos de dados sem atolar.