<?
$tr_list = array();
$query="select * from member where fenlei in (1,2,3,4)  order by id desc";
$result=mysql_query($query,$db);
while ($arr=mysql_fetch_array($result))
{
$tr_list[$arr['fenlei']] .="$arr[name]";
} echo "$tr_list[1]";
 echo "$tr_list[2]";
 echo "$tr_list[3]";
 echo "$tr_list[4]";
?>以上代码会把四组所有数据全部输出,如何写每组数据都能输出10条?用 $query="select * from member where fenlei in (1,2,3,4)  order by id desc  Limit 0,10";
只输出最后一组10条,用 $query="select * from member where fenlei in (1,2,3,4)  order by id desc  Limit 0,40";
也会只输出最后一组40条,怎么写才能每组都输出10条?

解决方案 »

  1.   

    select * from member where fenlei in (1) order by id desc limit 0,10 union
    select * from member where fenlei in (2) order by id desc limit 0,10 union
    select * from member where fenlei in (3) order by id desc limit 0,10 union
    select * from member where fenlei in (2) order by id desc 
      

  2.   

    上面错了,最后一个改成4
    select * from member where fenlei in (1) order by id desc limit 0,10 union
    select * from member where fenlei in (2) order by id desc limit 0,10 union
    select * from member where fenlei in (3) order by id desc limit 0,10 union
    select * from member where fenlei in (4) order by id desc 
      

  3.   

    对了,好像不支持order by id desc的,只能想个办法绕过去了select * from member where fenlei in (1)  limit 0,10 union
    select * from member where fenlei in (2)  limit 0,10 union
    select * from member where fenlei in (3)  limit 0,10 union
    select * from member where fenlei in (4) 
      

  4.   

    select * from member where fenlei in (1,2,3,4) order by id desc Limit 0,10
    select * from member where fenlei in (1,2,3,4) order by id desc Limit 10,10
    select * from member where fenlei in (1,2,3,4) order by id desc Limit 20,10
    select * from member where fenlei in (1,2,3,4) order by id desc Limit 30,10这样写试试
      

  5.   

    select * from (select * from member where fenlei in (1) order by id desc limit 0,10) as a union
    select * from (select * from member where fenlei in (1) order by id desc limit 0,10) as b union
    select * from (select * from member where fenlei in (1) order by id desc limit 0,10) as c union
    select * from (select * from member where fenlei in (1) order by id desc limit 0,10) as d用这句就可以了!不过就是不知道有没有更科学的做法
      

  6.   

    晕倒!又写太快了!
    SQL codeselect * from (select * from member where fenlei in (1) order by id desc limit 0,10) as a union
    select * from (select * from member where fenlei in (2) order by id desc limit 0,10) as b union
    select * from (select * from member where fenlei in (3) order by id desc limit 0,10) as c union
    select * from (select * from member where fenlei in (4) order by id desc limit 0,10) as d
      

  7.   


    SELECT * FROM member AS a WHERE 
    (SELECT count(*) FROM member AS b WHERE a.fenlei=b.fenlei AND b.id>a.id)<10
    AND a.fenlei IN(1,2,3,4)
    ORDER BY a.fenlei DESC,a.id ASC
      

  8.   

    +1
    比我这个简洁
    select * from (select * from member where fenlei in (1) order by id desc limit 0,10) as a union
    select * from (select * from member where fenlei in (2) order by id desc limit 0,10) as b union
    select * from (select * from member where fenlei in (3) order by id desc limit 0,10) as c union
    select * from (select * from member where fenlei in (4) order by id desc limit 0,10) as d
      

  9.   


    高手终于出现了,太感谢了,但我想倒序显示啊?order by id desc怎么写?
      

  10.   

    哈,原来已考虑到了,这里 ORDER BY a.fenlei DESC
    改成ORDER BY a.id DESC就可以了能不能帮注释一下所有代码的意思?看了云里雾里,虽然达到了效果,但不知道怎么实现的,原理?谢谢
      

  11.   


    还需要 yz='0'的才显示,不等于0的不显示,怎么插入到上面去?
    原来的如下:
    $query="select * from member where fenlei in (1,2,3,4) and yz='0' order by id desc";
      

  12.   

    AND a.fenlei IN(1,2,3,4) and yz='0',如此试试结果
      

  13.   

    用了你这个,还有必要在前面加上
    $tr_list = array();
    吗?好象加不加都能输出正确结果?