在我的SQLwith PHP上没有从RAND()查询接收随机结果

在我的SQLwith PHP上没有从RAND()查询接收随机结果,php,sql,random,Php,Sql,Random,我有一列有4行。我使用查询返回一个随机行,但95%的时候,我会得到表中的第一行。除了第一排,我很少有其他的排。 我在PHP中使用这个函数的方式是否有问题 //Array with the data to insert $sql_array = array( 'rightcolumn' => 'rightcolumn', ); // Create the SQL statement $sql = 'SELECT * FROM ' . rightcolumn . '

我有一列有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


orderbyrand
对于一个大的表来说效率很低,但是4行就可以了

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

因此,您的
orderby
子句可以表示为
orderbyfalse
,这没有什么意义

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

ORDER BY RAND()

我听从上面虫族和达贡的指示

声明应为:

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

或者更改为
限制1
。这可能就是
=1
的想法的来源,因此您可以同时使用
和ORDER BY RAND()限制1
欢迎您。请尽可能地接受答案:@starshine仅供参考,当没有人回答您自己的问题时,回答您自己的问题是可以的,但如果有人这样做,礼貌地通过标记他们的回答来给予他们应有的信任:谢谢!我真的很感谢您的解释,帮助我理解它。我会放弃投票,但我是一个新的美国公民爵士,显然我不能。