select ID,width from table group by width limit rand(),1;

解决方案 »

  1.   

    什么来晚了?根本不是这么简单
    是有几个width值,返回几行,并且这些行的width值不一样
    被你们打败了
      

  2.   

    SELECT * 
    FROM table 
    GROUP BY rand( ) , width
    LIMIT 3 觉得这个查寻如何??
      

  3.   

    是不是当你的width重复时只取一个ID咯,再进行随机取数
    这个应该先用随机对enum生成三个行数这三个数不重复,然后再做select语句
      

  4.   

    不对,不对。有几个width值,返回几行那不是和group by width一样了吗??
      

  5.   

    楼上说的对,就要这个效果,选择的行width不重复,但是enum里有几个值就提取几行
      

  6.   

    我的意思是,enum里有几个值,就显示几行
      

  7.   

    group by width  就是enum里有几个值,就显示几行晕
      

  8.   

    楼主,那个enum类型是什么类型呀??
    我怎么找不着呢??
      

  9.   

    SELECT * 
    FROM table 
    GROUP BY width
    LIMIT rand( ) ,3 楼主,我看这条应该合你的意了。
    或者用循环来取三条group by width
      

  10.   

    我的mysql出了点问题,不能测试。只能说说思路GROUP BY width 可以满足“有几个值就提取几行”,但以最后出现的为准

    15 200
    20 200
    则得到的是20 200DISTINCT(width) 也可以满足“有几个值就提取几行”,但以最先出现的为准

    15 200
    20 200
    则得到的是15 200但这不能满足楼主的“随机查询”的要求所以需要先对表做随机排序然后再取
    由于mysql4.1.0以下不支持子查询,所以要使用临时表
    CREATE TEMPORARY TABLE temp SELECT * FROM tbl_name ORDER BY rand()
    SELECT id, DISTINCT(width) FROM temp
      

  11.   

    如果是 mssql 就好做了!~~~~~~~~~~:(
      

  12.   

    哈哈,我的语句真的有问题哦。
    好再来一个,好像真的可以了。select distinct(width) from table group by rand() limit 3;快试试吧。嘻嘻嘻。
      

  13.   

    那还是得两个查询~~创建临时表很耗资源吧?
    请问唠叨,临时表存活期多长?数据库关闭后自动删除?
    我用phpmyadmin不能访问,用命令行可以,呵呵,不知道什么意思。如果不能一句完成,那还不如进行几个SQL查询每次返回一行啊。
      

  14.   

    临时表存活期多长?
    存活于当前连接,关闭连接自动删除。
    phpmyadmin中不能使用,php编程即可如果不能一句完成,那还不如进行几个SQL查询每次返回一行啊
    是的,但你总得知道width到底有多少可能的取值,不能每修改一次表就修改一次程序吧?to kingerq(多菜鸟) 
    select distinct(width) from table group by rand() limit 3;
    中按rand() 分组似乎说不通吧?能保证不丢失数据吗?
    假定
    id width rand()
    10 100   .01
    20 200   .5
    30 300   .01
    分组后10 100就不存在了
      

  15.   

    SELECT id, DISTINCT(width) FROM temp
    这句不能运行~~
      

  16.   

    SELECT DISTINCT(width),id FROM temp
    这样子就可以了。