首页 > 解决方案 > 如何对mysql数据进行排序并找到位置?

问题描述

我有 3 行的 mysql 数据(user_id、exam_id、marks)。我想根据标记和exam_id 找到每个用户的排名位置。带有 php 代码的 SQL 查询将如何。请帮我。提前致谢。

这是部分代码

$p = "SELECT * FROM IDTABLE WHERE EID = '$info[EID]'";
$rowp = mysqli_query($conn, $p);
while (($ret = mysqli_fetch_assoc($rowp)) > 0) {
    $q = "SELECT * FROM INFOTABLE WHERE EID = '$ret[EID]'";
    $rowq = mysqli_query($conn, $q);
    while (($retq = mysqli_fetch_assoc($rowq)) > 0) {                                
        $user[$ret['EID'] . $retq['UID']] = $retq['Marks'];                                
    }
}
arsort($user);
var_dump($user);

标签: phpmysqlsorting

解决方案


首先你应该考虑几件事:

  • 在发布新问题之前,您应该始终更好地搜索已经回答的问题(它是堆栈溢出代码的一部分)
  • 带来更多您想要的信息,尽可能清晰
  • 提供更多细节(例如:你的 sql 结构)

但是,我会尝试给您一个提示-希望它有所帮助!

  • 例如,您想根据他们的标记订购您的 user_id:

    从 my_table order by "marks" asc 中选择 user_id;

  • 例如,您想根据他们的分数和exam_id 订购您的 user_id :

    按“marks”、“exam_id” asc 从 my_table 顺序中选择 user_id;

  • 例如,您想根据用户的分数创建一种排名:

    SET @rank := 0; SELECT *, @rank := @rank + 1 AS rank FROM my_table order by tags ASC;

  • 例如,您想从特定的

    SET @rank := 0; SELECT * from (select *, @rank := @rank + 1 FROM my_table order by tags ASC) AS rank where user_id = 2;

希望这可以帮助!您可以在此处获得有关 mysql 排名的更多信息

问候,


推荐阅读