如果要从随机从数据库取n条记录,我看网上更多的是使用的sql="select * from tablename where id >= ((SELECT MAX(id) FROM tablename)-(SELECT MIN(id) FROM tablename)) * RAND() + (SELECT MIN(id) FROM tablename)order by rand() LIMIT  N";其实我也比较喜欢这个语句,可是我现在做的一个东西不适用,为什么呢?因为的数据库里面的id不连续,并且他们之前的跳跃间断还会有几百甚至上千的数,比如类似1938443 1939888 2007888这些的三条记录是挨在一起的,那样上面语句的很可能取到的记录并没有什么变化。最后想了想,可以用一种比较笨的办法,利用循环来设计sql。

$firstsql="SELECT * FROM tablename ";
$totalnum=mysql_num_rows (mysql_query ($firstsql, $conn)); //取得数据库的记录数

for ($i = 0; $i < N; $i++) { $id = rand(1, $totalnum); $sql = "select * from tablename order by id desc limit N, 1"; } 这样不就行了吗。

分类: SQL

发表评论