商品表id,名称name,价格price
1,A,80
2,B,10
3,C,30
4,D,50
5,E,40
6,F,20
表是自己随便建的,但价格不同商品价格不同一样!!!
商品表id,名称name,价格price
1,A,80
2,B,10
3,C,30
4,D,50
5,E,40
6,F,20
表是自己随便建的,但价格不同商品价格不同一样!!!
select sum(price) sumup,GROUP_CONCAT(id) from (select @r:=@r+1 as
row_num ,ceil(@r/3) x, a. from (select from table order by rand())
a ,(select @r:=0) b) t group by t.x having sumup > 100;
随机排序,然后按行号3个一组,得到id的字符串连接,根据你的需求在改改就可以了
使用 order by rand()
方法,当选出的行数较多时(如100,000行),会因为全量排序浪费很多时间。下面的SQL先随机选出符合要求记录的1%,再取前三个。
select * from products where price > 100 and random() < 0.01 limit 3
补充:这种方法得到的结果不是严格的随机选取,但是当取出的比率足够小时可以很好的模拟随机性,一般应用应该可以接受的。
755 阅读
1 回答576 阅读
MYSQL的,不过不能用于大量数据的表哦