Php 获得此人的分数,并与属于同一州的人进行比较

Php 获得此人的分数,并与属于同一州的人进行比较,php,json,sql-order-by,Php,Json,Sql Order By,首先,我想用一个例子来说明我想要实现的目标。然后我将展示到目前为止编写的代码,但这些代码只处理问题的第一部分 在本例中,“名称”是Elsa。因此,最初,$name和$state分别等于'Elsa'和'Washington' $name = $_POST["name"]; ///Is equal to 'Elsa' $state = $_POST["state"]; ///Is equal to 'Washington' 表的名称为“table” +-----+------------+----

首先,我想用一个例子来说明我想要实现的目标。然后我将展示到目前为止编写的代码,但这些代码只处理问题的第一部分

在本例中,“名称”是Elsa。因此,最初,$name和$state分别等于'Elsa'和'Washington'

$name = $_POST["name"]; ///Is equal to 'Elsa'
$state = $_POST["state"]; ///Is equal to 'Washington'
表的名称为“table”

+-----+------------+--------+------------+------+
| ids | Player     |  score |   State    | Age  |
+-----+------------+--------+------------+------+
|   1 | Mike       |   1067 | Arizona    |  30  |
|   2 | Lit        |    970 | Washington |  25  |
|   3 | Sara Leman |     53 | California |  17  |    
|   4 | Ted        |    782 | Washington |  22  |
|   5 | Kralem     |    589 | Florida    |  36  |
|   6 | MrDud      |    953 | Washington |  17  |
|   7 | Gregs      |    752 | Arizona    |  38  |
|   8 | Batman     |     67 | New York   |  16  |
|   9 | Fox        |    673 | Washington |  34  |
|  10 | Hans       |    500 | Washington |  23  | 
|  11 | Elsa       |    552 | Washington |  28  |
|  12 | Britta     |    400 | Washington |  31  |
+-----+------------+--------+------------+------+
//一,。选择Elsa所在州即华盛顿的所有人

+-----+------------+--------+------------+
| ids | Player     |  score |   State    |
+-----+------------+--------+------------+
|   2 | Lit        |    970 | Washington |
|   4 | Ted        |    782 | Washington |
|   6 | MrDud      |    953 | Washington |
|   9 | Fox        |    673 | Washington |
|  10 | Hans       |    500 | Washington |
|  11 | Elsa       |    552 | Washington |
|  12 | Britta     |    400 | Washington |
+-----+------------+--------+------------+
//二,。按分数排序

+-----+------------+--------+
| ids | Player     |  score |
+-----+------------+--------+
|   2 | Lit        |    970 |
|   6 | MrDud      |    953 |
|   4 | Ted        |    782 |
|   9 | Fox        |    673 |
|  11 | Elsa       |    552 |
|  10 | Hans       |    500 |
|  12 | Britta     |    400 |
+-----+------------+--------+
//////这就是我的代码目前能走多远

//////这是我需要解决的最后一个棘手的部分 //3. 选择艾尔莎得分或更高的球员,这意味着布丽塔消失了

+-----+------------+--------+
| ids | Player     |  score |
+-----+------------+--------+
|   2 | Lit        |    970 |
|   6 | MrDud      |    953 |
|   4 | Ted        |    782 |
|   9 | Fox        |    673 |
|  11 | Elsa       |    552 |
+-----+------------+--------+
//完成了。所以我真正感兴趣的是下表

+------------+--------+
| Player     |  score |
+------------+--------+
| Lit        |    970 |
| MrDud      |    953 |
| Ted        |    782 |
| Fox        |    673 |
| Elsa       |    552 |
+------------+--------+
这是密码


如果您希望用户的分数低于Elsa,那么可以在查询中对其进行排序,如下所示

SELECT * FROM table WHERE state = ? AND score >= (SELECT score FROM table WHERE name = 'Elsa') ORDER BY score

当然,我建议你不要用这个名字来识别艾尔莎,而是把她的身份证以表格的形式发送给她,并用它来代替。

name>='Elsa'应该不是name='Elsa'?你是对的@riggsfully我错放了>:谢谢注意。
select t1.Player,t1.score 
   from table t1, 
        (select state, score from table where state = ? and player = ? ) t
   where t1.state=t.state and t1.score >= t.score 
   order by score desc