表里面有 userid ,和 exp
现在要查询比某个 exp 值大的 50 条记录和比 exp 小的 50 条记录,然后在这 100 条记录里面随机 5 条
最好是一条语句直接查出来 有什么比较好的方法吗。。
1
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) 随便写了下,你可以自己去试试。 |
2
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;
|
3
mengzhuo 2015-10-20 07:54:15 +08:00 via iPhone
这难道是做游戏?
确定你们数据库顶得住? |
4
zpvip 2015-10-20 08:54:57 +08:00
查下 50 条很容易,查上 50 条数据上几十万一定顶不住,不信你试试
|
5
wdhwg001 2015-10-20 09:41:53 +08:00 via iPhone
匹配系统?那么应该是:
查 exp>x 的所有记录 排序,取倒数第 50 条的 exp 为 y 查 exp<y 的所有记录 排序,取正数 100 条的集合为 A 将 A 随机排序并取 5 条 …然后这是何等虐的一个查询啊。 |
7
xiuc001 2015-10-20 11:16:36 +08:00
嘣嘣嘣~撸主获得胜利,成功摧毁一个公司
|