没有从带有PHP的MySQL上的RAND()查询中接收到随机结果


Not receiving random results from RAND() query on My SQLwith PHP

我有一列有4行。我使用查询返回一个随机行,但95%的情况下,我会得到表中的第一行。除了第一排,我很少有其他的排。我在PHP中使用这个函数的方式有什么问题吗?

//Array with the data to insert
$sql_array = array(
    'rightcolumn'    => 'rightcolumn',
);
// Create the SQL statement
$sql = 'SELECT * FROM ' . rightcolumn . '
         ORDER BY RAND() = ' . 1;
 // Run the query 
 $result = $db->sql_query($sql);
 // $row should hold the data you selected
$row = $db->sql_fetchrow($result);
// Be sure to free the result after a SELECT query                        
 $db->sql_freeresult($result);
// Show we got the result we were looking for
 echo $row['rightcolumn'];
仅限ORDER BY RAND(),删除=1

ORDER BY RAND对于一个大表是非常低效的,但是4行是很好的

请记住,RAND()返回的值在[0, 1)范围内-RAND() = 1表达式总是返回false。

所以你的ORDER BY子句可以表示为ORDER BY false,这没有什么意义。

相反,您必须按随机值排序,即:

ORDER BY RAND()

我按照上面zerkms和Dagon的指示进行了操作。

声明应为:

$sql = 'SELECT * FROM ' . rightcolumn . '
        ORDER BY RAND()';