使用的mysql是4.07的.似乎不支持in模式.不过应该支持left join吧.目前在做个新闻列表的页面.按id取后20条记录.然后随机排列出来.
$sql=mysql_query("Select * from (Select id from table1 order by id desc limit 20) order by rand() limit 5") or die("Error");
当然以上的代码是错误的.不过相信各位知道是什么意思.当我换成$sql=mysql_query("Select * from table1 where id in (Select id from table1 order by id desc limit 20) order by rand() limit 5") or die("Error");
还系不行.用了left join的方法.似乎也有问题.求各位支个招~
$sql=mysql_query("Select * from (Select id from table1 order by id desc limit 20) order by rand() limit 5") or die("Error");
当然以上的代码是错误的.不过相信各位知道是什么意思.当我换成$sql=mysql_query("Select * from table1 where id in (Select id from table1 order by id desc limit 20) order by rand() limit 5") or die("Error");
还系不行.用了left join的方法.似乎也有问题.求各位支个招~
对于你的问题,可以分两步完成
1、将子查询部分做成临时表
CREATE TEMPORARY TABLE temp Select × from table1 order by id desc limit 20
2、从临时表完成主查询
Select * from temp order by rand() limit 5
where 20>(select count(*) from table1 where id>t1.id)
order by rand()
limit 5;
随机排列交给PHP做会比较好
我用了双次查询的方式解决了.先按id desc后取出20条记录.然后在这20条的基础上随机了.感谢各位的回答.