php/mysql-如何获得用户排名?

php/mysql-如何获得用户排名?,php,mysql,Php,Mysql,例如,我有这样一个表: name rating matei 124 andrei 20 serj 25 john 190 mike 96 andy 245 tom 73 我需要通过评级输出类似于此的内容: 约翰的职位是2;或者,汤姆的位置是5;我不需要得到所有的结果,只要一个 我怎样才能做到这一点 提前感谢表在数据库文献中被更正式地称为-它们不保证是有序的,因为它们是元组集,所以您的问题没有意义。如果需要依赖订单/位置

例如,我有这样一个表:

name rating matei 124 andrei 20 serj 25 john 190 mike 96 andy 245 tom 73 我需要通过评级输出类似于此的内容:

约翰的职位是2;或者,汤姆的位置是5;我不需要得到所有的结果,只要一个

我怎样才能做到这一点


提前感谢

表在数据库文献中被更正式地称为-它们不保证是有序的,因为它们是元组集,所以您的问题没有意义。如果需要依赖订单/位置,则需要定义一个附加列(如自动递增的ID列)来捕获和存储该信息。

这是否有帮助?

通常MySQL不保证查询结果中的行顺序,除非使用order by子句显式指定了顺序。如果您有一些单独的排序列,则可以使用如下查询:

SELECT count(1) as position
FROM table
WHERE order_column <= {john's order_column value};

你不这样做吗

SELECT * FROM Table ORDER BY rating DESC LIMIT 1,6
这将返回被6行偏移的1行?还是我弄错了,语法应该是

SELECT * FROM Table ORDER BY rating DESC LIMIT 1 , {{POS}}

请注意,如果您的姓名和评分都是重复的,则此查询将为他们分配相同的评分。

您的问题是什么?如果是关于如何查询表的问题,您可能想看一看基本的PHP/mySQL教程。是的,评级是,我需要通过ratingok获得用户订单的排名,谢谢。嗯…如果两个人的评分相等。。。我不知道。。也许是按名字或类似的东西订购。。。但在这种情况下,我可以用什么方法呢?我不知道:这完全取决于职位在你的申请中的意义。最简单的方法是:position=countguys,评分越高+1。请参见Quassnoi回答中的查询。看,是的,我需要按用户评级排序,但我需要只接收特定用户的排名,而不是所有用户的排名,例如john的排名是2;
SELECT * FROM Table ORDER BY rating DESC LIMIT 1 , {{POS}}
SELECT  COUNT(*) + 1
FROM    users
WHERE   (rating, name) <
        (
        SELECT  rating, name
        FROM    users
        WHERE   name = 'john'
        )