mysql 里 上下各 50 条记录怎么查询

2015-10-19 18:11:59 +08:00
 liguoqinjim

表里面有 userid ,和 exp
现在要查询比某个 exp 值大的 50 条记录和比 exp 小的 50 条记录,然后在这 100 条记录里面随机 5 条
最好是一条语句直接查出来 有什么比较好的方法吗。。

3712 次点击
所在节点    MySQL
7 条回复
ALeo
2015-10-19 19:42:18 +08:00
(select * from t_test where exp > 5 limit 50)
union
(select * from t_test where exp < 5 order by exp desc limit 50)


随便写了下,你可以自己去试试。
owwlo
2015-10-20 02:04:43 +08:00
select * from ((select * from table_name where exp > exp_val limit 50) union (select * from table_name where exp < exp_val limit 50)) as WoShiYiZhangBiao order by rand() limit 5;
mengzhuo
2015-10-20 07:54:15 +08:00
这难道是做游戏?
确定你们数据库顶得住?
zpvip
2015-10-20 08:54:57 +08:00
查下 50 条很容易,查上 50 条数据上几十万一定顶不住,不信你试试
wdhwg001
2015-10-20 09:41:53 +08:00
匹配系统?那么应该是:
查 exp>x 的所有记录
排序,取倒数第 50 条的 exp 为 y
查 exp<y 的所有记录
排序,取正数 100 条的集合为 A
将 A 随机排序并取 5 条
…然后这是何等虐的一个查询啊。
phx13ye
2015-10-20 10:42:28 +08:00
@owwlo WoShiYiZhangBiao 好评
xiuc001
2015-10-20 11:16:36 +08:00
嘣嘣嘣~撸主获得胜利,成功摧毁一个公司

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/229298

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX