Mysql 按字段顺序拉出一条记录

Mysql 按字段顺序拉出一条记录,mysql,sql,Mysql,Sql,我有一个简单的sql查询,如下所示: SELECT * FROM leaderboard WHERE UserId = '$sessfacebook'" 这将为我选择用户名、facebookid和数字分数。我需要把这张记录拿出来,但如果表格是按分数排序的,我需要找出记录在哪个位置。希望这有意义。您可以使用子查询选择分数较高的记录数: SELECT * , (select count(*) from leaderboard lb2 where lb2.score > lb1

我有一个简单的sql查询,如下所示:

SELECT * FROM leaderboard WHERE UserId = '$sessfacebook'"

这将为我选择用户名、facebookid和数字分数。我需要把这张记录拿出来,但如果表格是按分数排序的,我需要找出记录在哪个位置。希望这有意义。

您可以使用子查询选择分数较高的记录数:

SELECT  * 
,       (select count(*) from leaderboard lb2 where lb2.score > lb1.score) as Rank
FROM    leaderboard lb1
WHERE   UserId = '$sessfacebook'"

您可以使用子查询选择分数较高的记录数:

SELECT  * 
,       (select count(*) from leaderboard lb2 where lb2.score > lb1.score) as Rank
FROM    leaderboard lb1
WHERE   UserId = '$sessfacebook'"

您可以使用另一个查询

SELECT count(*) Position
FROM leaderboard
WHERE score >= (
    SELECT score
    FROM leaderboard
    WHERE UserId = '$sessfacebook')
您可以将其作为子查询插入

SELECT *, (
    SELECT count(*)
    FROM leaderboard b
    WHERE b.score >= leaderboard.score) Position
FROM leaderboard
WHERE UserId = '$sessfacebook'

您可以使用另一个查询

SELECT count(*) Position
FROM leaderboard
WHERE score >= (
    SELECT score
    FROM leaderboard
    WHERE UserId = '$sessfacebook')
您可以将其作为子查询插入

SELECT *, (
    SELECT count(*)
    FROM leaderboard b
    WHERE b.score >= leaderboard.score) Position
FROM leaderboard
WHERE UserId = '$sessfacebook'
这将创建一个表别名作为排名排行榜,并从中获取所需的记录。 会对你有用的,测试过了

这将创建一个表别名作为排名排行榜,并从中获取所需的记录。
将为您工作,测试它。

aha好的,那么如何从该查询中获取位置…如何将其分配给变量?很抱歉,我的sql不是很出色。@eld-在这两个查询中,列的名称都是“Position”。因此,在php中,您将引用
$pos=intval($result['position'])太棒了。我真的需要去做=去得到我想要的,但它正在工作。好的,那么我如何从查询中获得位置…我如何将其分配给变量?很抱歉,我的sql不是很出色。@eld-在这两个查询中,列的名称都是“Position”。因此,在php中,您将引用
$pos=intval($result['position'])太棒了。我真的需要去做=去得到我想要的,但它正在工作。非常感谢