有几个疑问:数据量的问题。比如说CLASS 为A的数据,如果只有两条数据为A的话,可能你查询的时候是会出同样的记录的。。

解决方案 »

  1. cvm
  2. select * from biao where class='a' || class='b' || class='c' group by class order by rand()
    测试过了,语句好使.||中间看看有没有空格,如果有空格的话去掉他.
    语句没有毛病.
      

  3. 你用SQLYOG之类的SQL编辑软件把语句复制进去看看有空格的地方对不对,
    然后按F5刷新查询,他是随机的.
      

  4. 我查出来就不是随机的,
    order by rand()实际上没有任何效果
      

  5. mysql  5.0.51a
    php 5.2.6
      

  6. 你的MYSQL用的什么编辑器,
    推荐SQLYOG软件跟sqlsever的查询分析器一样,
    把语句复制进去鼠标划上按F5刷新查询可以看到语句是好使的.
    数据是随机显示的.
      

  7. 我是直接在程序里测试的,用phpmyadmin测试也一样。我是要用于程序中的,所以在程序中必须有效。
      

  8. 这个不是RP问题吧,你们把那句写成PHP文件执行,能随机显示?
      

  9. 呵呵~~~~~~~~~~~~~~~~~~~~~
    我MYSQL测试过都好使了,程序里还能不好使.
      

  10. group by class 
    这一句分组时,它能从每个组里随机取一条记录?
      

  11. class和id都有索引索引:   键名 类型 基数 操作 字段 
    PRIMARY  PRIMARY 82780       id  
    class  INDEX  124       class 
      

  12. 随机查询20条select  *  from  表名 order by rand() limit 20感觉你的SQL语句没错阿。
      

  13. select  *  from  表名 order by rand() limit 20 
    这样查肯定没错。这个没有group by,没有分组。
      

  14. group by class 
    是按class字段分组
    rand()是随机和索引没关系吧.
    语句在网页,数据库中测试都好使.
      

  15. php文件
    <?php
    mysql_connect("localhost","root","km820110");
    mysql_select_db("ceshi");
    $a="select * from biao where class='a' || class='b' || class='c' group by class order by rand()";
    $b=mysql_query($a);
    while ($row = mysql_fetch_array($b)) 
    {
      echo $row["id"];
      echo $row["class"];
      echo $row["neirong"];
    }
    ?>
    数据库文件
    create database ceshi
    create table biao
    (
     id int auto_increment,
     class varchar(10),
     neirong varchar(10),
     primary key(id)
    )
    我把从数据库到php的代码都给你这你要是还说不好使
    我就真没办法了.
      

  16. 一条一条的实现可以,三条一块好像不能,
    select * from table where class='a' order by rand() limit 1;
    select * from table where class='b' order by rand() limit 1;
    select * from table where class='c' order by rand() limit 1;
      

  17. 回cpc1984  你仔细看一下结果,输出的结果的确每次都在变,但变的只是排序,而取到的记录永远都是同一条。$a="select * from biao where class='a' ||  class='b' || class='c' group by class order by rand()"; 
    $b=mysql_query($a); 
    while ($row = mysql_fetch_array($b)) 

      echo $row["id"]."<br>"; } 这样改一下比较好对比结果。
      

  18. 一条一条能实现这个我知道,但需要指定几十个class,那样查的话效率太低了。
      

  19. 兄弟,我是厦门维派;你这里有需要域名空间,企业邮局或者是服务器带宽租用的吗,50M独享,或者百独,G口;或者如果你有不少空间需求的话,可以考虑代理,搞点外快。目前我们也在招收代理,利润可以是4.5折  。 
    需要的朋友,可以直接联系我 
    QQ  908267931  张先生    
    MSN:allen-angel@hotmail.com 
    邮箱:zjc@wellpie.com
      

  20. select  *  from  表名 where class in (a,b,c) order by rand() limit 20 
      

  21. select  *  from  表名 where class in (a,b,c) order by rand() limit 20 这样查是很笨的方法吧,理论上查询结果可以缺少1个class
    如果需要指定的class更多呢
      

  22. select tmp.* from (select * from table1 where class in('a','b,',c','d') order by rand()) tmp group by tmp.class