SQL Query获取条目数

时间:2012-12-09 03:19:09

标签: mysql sql phpmyadmin

我正在尝试根据指定的参数选择随机数量的条目。

喜欢如果我有桌子T

T( id, data1, data2 ,no);

现在没有一个随机数字的字段。

我想获得T的随机子集,使得no的数量处于特定值。

例如,假设我想要总数= 7

T(0,a,a,4);
T(1,B,B,4);
T(2,v,v,1);
T(3,d,d,2);
T(4,d,d,3);

查询的查询输出可以是

T(0,a,a,4);
T(4,d,d,3);

OR

T(1,B,B,4);
T(2,v,v,1);
T(3,d,d,2);

等。

这可能吗?我想不出逻辑。我能想到的最好的方法是一次检索一行并继续计数,但效率低下。

(注意:如果计数超过no,则可以接受但不是相反)

1 个答案:

答案 0 :(得分:1)

这会让你非常接近。

create table t ( name varchar(1), num tinyint ) ;

insert into t (name, num) values ( 'a', 4 ), ('b', 2), ('c', 3),
    ('d',1), ('e', 4), ('f', 1),('g', 6);

以下是查询:

select * from 
  (select name, num, @cum := @cum + num as cumulate from 
    (select * from t order by rand()) as t3, 
  (select @cum := 0 ) as t1 
  ) as t2
where cumulate <= 7;

这是一个fiddle。我肯定它可以进行优化,但我很想知道如何创建它。