在我的SQLwith PHP上没有从RAND()查询接收随机结果
我有一列有4行。我使用查询返回一个随机行,但95%的时候,我会得到表中的第一行。除了第一排,我很少有其他的排。 我在PHP中使用这个函数的方式是否有问题在我的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 . '
//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仅供参考,当没有人回答您自己的问题时,回答您自己的问题是可以的,但如果有人这样做,礼貌地通过标记他们的回答来给予他们应有的信任:谢谢!我真的很感谢您的解释,帮助我理解它。我会放弃投票,但我是一个新的美国公民爵士,显然我不能。