php - mysql数据基本排序及php打印结果

标签 php mysql ranking

我有一个表,我想在其中对其中一列等于我定义的值的行进行排名。

例如,在此表中,我想获取 Col1 = a 的所有行,然后找到 Col3 = Ross 的行的排名(按 Col2 中的分数排名)。

Col1 | Col2 | Col3
------------------
a    | 10   | John
a    | 6    | Nick
a    | 8    | Ross
a    | 2    | Tim
a    | 4    | Paul
b    | 9    | John
b    | 3    | Nick
b    | 5    | Ross
b    | 7    | Tim
b    | 1    | Paul

最终我想计算这个:

Col1 | Col2 | Col3 | Rank
-------------------------
a    | 10   | John | 1
a    | 8    | Ross | 2
a    | 6    | Nick | 3
a    | 4    | Paul | 4
a    | 2    | Tim  | 5

并打印结果“2”。

我可以用这个查询对表格进行排序,但是不行;知道如何打印我需要的结果(使用 php)。

$query = "SELECT * FROM exampleTable WHERE Col1 = a order by Col2 DESC";

最佳答案

试试这个:

"SET @rank=0; SELECT * FROM (SELECT *, @rank:=@rank+1 AS Rank FROM exampleTable WHERE Col1 = 'a' order by Col2 DESC) AS t"

这是一个test run这表明它有效。

如果您想要查找 Ross 的排名,您可以在添加 WHERE Col3 = 'Ross' 的情况下运行查询,并且只选择排名列,如所示 here

关于php - mysql数据基本排序及php打印结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13037495/

相关文章:

php - 单例 vs 工厂?

javascript - AJAX 未将数据传递给 PHP 脚本?

php - 错误: You have an error in your SQL syntax; near ')' at line 1

mysql - 如果用户已经在购物车中有东西,建议他可以购买什么

mysql - Node.js MySQL 插入问题

php - 显示结果表 SQL

mysql - mysql表中的排名条目

php - 如何使用 mysql 浏览器(如 phpmyadmin)在 mysql 中设置外键?

mysql - 我如何构建我的数据库以在 MySQL 中有效地按依赖于时间的函数进行排序?

Python 仅对列表的一部分进行排名