Php Mysql选择查询-无法限制记录
我有一个排名表,里面所有的球员都有自己的排名Php Mysql选择查询-无法限制记录,php,mysql,Php,Mysql,我有一个排名表,里面所有的球员都有自己的排名 id | rank | playername | is_available | ranking_name | ranking_id ------------------------------------------------------------------- 1 | 1 | testname1 | 1 | australia open | 1 2 | 2 | testname2 |
id | rank | playername | is_available | ranking_name | ranking_id
-------------------------------------------------------------------
1 | 1 | testname1 | 1 | australia open | 1
2 | 2 | testname2 | 1 | australia open | 1
3 | 3 | testname3 | 0 | australia open | 1
4 | 4 | testname4 | 1 | australia open | 1
5 | 1 | testname5 | 1 | japan open | 2
这张桌子很大,每个排名可以有超过500名玩家。
现在每个玩家都可以向比他高x%的玩家挑战一场比赛。此x由superadmin设置。如果x=10,玩家testname4可以挑战排名中的玩家数量_id*10/100=4*10/100=0.4到1。所以testname4可以挑战一个比他高的玩家。但是他上面的玩家testname3不可用。所以他应该得到下一个可用的球员。我想要像这样的输出
//testname4 can challenge below players
id | rank | playername | status |
--------------------------------------
2 | 2 | testname2 | available |
3 | 3 | testname3 | not available |
我所做的:
//testname4 wants to challenge. So i know his rank and other information
$selectSql = mysql_query("SELECT * from rankingTable where ranking_id = 1 AND rank < 4");
这也给了我testname1记录。我怎样才能限制这一点?最大的问题是我需要按升序显示排名。在此处使用order by并不容易。尝试只添加限制1或限制0,1开头,在查询末尾添加多少记录。首先通过执行选择来确定要质询的用户。。。其中,_available=1 ORDER BY rank DESC LIMIT?,然后使用MINrank查找排名最高的此类用户,然后使用该信息筛选表中排名介于自己和该用户之间的用户: 选择rankingTable* 从rankingTable, 选择MINa_rank作为下限,b_rank-1作为上限 从…起 选择a.rank作为a_-rank,b.rank作为b_-rank 从rankingTable作为一个连接rankingTable作为b使用ranking_id 其中排名_id=? b.playername=? a.rank