我有一个包含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'];
答案 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()';