随机取出三个商品价格大于一百的sql怎么写

商品表id,名称name,价格price
1,A,80
2,B,10
3,C,30
4,D,50
5,E,40
6,F,20
表是自己随便建的,但价格不同商品价格不同一样!!!

阅读 3.1k
3 个回答

MYSQL的,不过不能用于大量数据的表哦

SELECT * FROM 商品表 where price>100 ORDER BY RAND()  LIMIT 3

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

补充:这种方法得到的结果不是严格的随机选取,但是当取出的比率足够小时可以很好的模拟随机性,一般应用应该可以接受的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进