SELECT * FROM `shu`
WHERE id >= (SELECT floor( RAND() * ((SELECT MAX(id) FROM `shu`)-(SELECT MIN(id) FROM `shu`) +1 ) + (SELECT MIN(id) FROM `shu`)))
ORDER BY id LIMIT 10;

解决方案 »

  1.   

    这本身只是一个SQL语句。你的问题到底是什么?问题说明越详细,回答也会越准确!参见如何提问。(提问的智慧
        
      

  2.   

    SELECT * FROM `shu`
    WHERE id >= (SELECT floor( RAND() * ((SELECT MAX(id) FROM `shu`)-(SELECT MIN(id) FROM `shu`) +1 ) + (SELECT MIN(id) FROM `shu`)))
    ORDER BY id LIMIT 10;这执行了几次 具体是怎样的
      

  3.   

    这是一句SQL语句。这句SQL语句自然每提交一次执行一次。
      

  4.   

    你的问题目前对别人来说和问  select * from shu 执行了几次,没什么两样。
      

  5.   

    explain 你的语句
    有几行就执行了几遍
      

  6.   

    这样可以生成一个随机数.  可是 我想要2个. 但是我又不想重复写这个语句
    SELECT floor( RAND() * ((SELECT MAX(id) FROM `shu`)-(SELECT MIN(id) FROM `shu`) +1 ) 
    + (SELECT MIN(id) FROM `shu`)
    所以 我就是打算在这个语句上生成的值在加 个 1可是 我不知道 不知道要怎么写这样形式: 
          select *from shu  where id in(随机值  , 随机值 + 1); 这样 我就有可以读取2个值了.   可是 我不知道  要怎么保存 随机生成的那个值.  所以我就无法实现 随机值+1   .  问下这  值要怎么保存 ?    
      

  7.   

    可以使用如下方法。  (猜你的想法可能是下面的东西,说实话,从你的表达来说,无法了解你到底想做什么,希望别人帮你什么)
    mysql> select @x:=rand(),@x,@x+1;
    +--------------------+--------------------+-------------------+
    | @x:=rand()         | @x                 | @x+1              |
    +--------------------+--------------------+-------------------+
    | 0.4052738271702769 | 0.4052738271702769 | 1.405273827170277 |
    +--------------------+--------------------+-------------------+
    1 row in set (0.03 sec)mysql>
      

  8.   

    create temporary table test(a varchar(100))
    insert into test values(rand())
    insert into test values(rand()+1)
    select *from shu where id in (select a from test)