不接收来自My SQLwith PHP上的RAND()查询的随机结果

时间:2014-10-17 01:52:40

标签: 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 . '
         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'];

3 个答案:

答案 0 :(得分:1)

ORDER BY RAND(),删除=1

ORDER BY RAND使用大表非常低效,但是4行却很好

答案 1 :(得分:0)

请注意RAND()返回[0, 1)范围内的值 - RAND() = 1表达式始终返回false。

因此,您的ORDER BY子句可以表示为ORDER BY false,这没什么意义。

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

ORDER BY RAND()

答案 2 :(得分:0)

我按照上面的zerkms和Dagon的指示。

陈述应该是:

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