rt

解决方案 »

  1.   

    round(rand() * 1024) + 1
      

  2.   

    比如表 tbl(id, shuffle);
    id有其值,但shuffle没有内容,就是要用1-1024之间的随机数填补shuffle字段的空白!
      

  3.   

    SELECT FLOOR(1 + (RAND() * 1024));
      

  4.   

    rand()的范围为0到1,因此rand()*1024最大值可以为1024。
    随机数的应精确到小数点后3位,可以考虑下面的写法:
    select floor(round(rand(),3)*1023 + 1)
      

  5.   

    谢谢两位,现在有个问题:
    我现在用如下语句去更新tbl(id, shuffle)的shuffle字段,
    id不是唯一的,按照业务逻辑来讲,同样的id对应的shuffle的值应该是一样的,
    即:
    result 1:
    id   shuffle
    1    640
    1    640
    1    640
    2    370
    2    370但用下边的语句更新的结果使得表中相同id后对应的值并不一样,如下:
    result 2:
    id   shuffle
    1    214
    1    640
    1    785
    2    23
    2    370
    update tbl set shuffle = (select round(rand() * 1024) + 1 as shuffle);
    如果希望得到result 1那样的结果,语句应该如何写呢?
      

  6.   

    单独建一个表,ID唯一,里面保存shuffle值,另外一个表放普通数据,两个表做联合查询
      

  7.   


    update tbl set shuffle = (select round(rand() * 1024) + 1 as shuffle);
    完后再按最小值更新一遍。