现在我有1张表字段如下ID QUEUE_PRIORITY
                     1    100
                     2    200
                     3    10000
                     4    500QUEUE_PRIORITY 表示 被取到的概率值我想 通过概率 取2个值出来 意思就是 取到 2的概率 是 200/(100+200+10000+500)怎么排序法 就是每次查询这条sql得时候 第一条记录 出现 3 这个最多也有可能出现 1 或者 2 或者4如果sql无法实现 能在java里面实现吗
求大大指教javaoraclesql

解决方案 »

  1.   

    不是根据概率来排序 也不是求概率值   而是   随机取一条记录  但是QUEUE_PRIORITY中值越高的那条记录 被取到的概率越大
      

  2.   

    建议做在java里面,方便取随机数做逻辑判断~sql很弱地说
      

  3.   

    前提是你这张表的数据量不太大。就拿你举例的数据来做,如下:
    计算出概率区间:
        1          2             3             4
    [0,0.009],(0.009,0.028],(0.028,0.954],(0.954,1.000]
    很懒地把精度做到三位。然后产生一个随机数,看这个数的值落入哪个区间,然后就取对应的值就可以了。public static void main(String[] args) {
    //[0,0.009],(0.009,0.028],(0.028,0.954],(0.954,1.000]
    String key = new String();
    Random random = new Random();
    Float p = random.nextFloat();
    if(p>=0&&p<=0.009)
    key = Constant.KEY1;
    else if(p>0.009&&p<=0.028)
    key = Constant.KEY2;
    else if(p>0.028&&p<=0.954)
    key = Constant.KEY3;
    else if(p>0.954&&p<=1)
    key = Constant.KEY4;
    System.out.println(key);
    }我这里是假设你数据不多,全拿出来放到hashmap中,这里拿到了key,自然就取对应的值就OK了