使用MySQL随机选择行

Jos*_*ang 1 php mysql codeigniter

从一个表中随机选择记录; 我是否必须始终在PHP中设置临时变量?我需要一些帮助来选择CodeIgniter模型中的随机行,然后每次查看我的主页时在视图中显示三个不同的行.有没有人对如何解决这个问题有任何想法?提前致谢!

tim*_*dev 5

如果你没有大量的行,你可以简单地说:

SELECT * FROM myTable ORDER BY RAND() LIMIT 3;
Run Code Online (Sandbox Code Playgroud)

如果你有很多行,这将会变慢,但对于较小的数据集,它将正常工作.

正如史蒂夫米歇尔在他的回答中提到的那样,这种方法对于大型桌子来说会非常难看.他的建议是一个跳下去的好地方.如果你知道表中的近似最大整数PK,你可以做一些事情,比如在一个和你的最大PK值之间生成一个随机数,然后一次抓取一个随机行,如:

$q="SELECT * FROM table WHERE id >= {$myRandomValue}";
$row = $db->fetchOne($q); //or whatever CI's interface to grab a single is like
Run Code Online (Sandbox Code Playgroud)

当然,如果你需要3个随机行,你将在这里有三个查询,但由于它们完全在PK上,它们会很快(比整个表随机化).