【问题标题】:MySQL Selection for top x rankings前 x 排名的 MySQL 选择
【发布时间】:2018-01-03 04:55:09
【问题描述】:

我想在我的 MySQL 数据库中进行选择,我已将数值存储在特定列中。

我看到一些网站根据某些标准显示10 10,我一直想知道是否可以根据数值进行选择。

我的数据库是这样的:

| id | name      | pts |
+----+-----------+-----+
| 1  | Brad      |  3  |
| 2  | Jane      |  8  |
| 3  | Jones     |  10 |
| 4  | Paty      |  15 |
| 5  | Sammy     |  2  |

现在我的问题是,如何根据pts 进行仅选择前 3 名用户的查询,使其返回结果为:

1st Position = Paty => 15pts
2nd Position = Jones => 10pts
3rd Position = Jane => 8pts

?

【问题讨论】:

  • 您是否尝试过任何查询?这已被多次询问,您可以轻松找到答案。您在发布之前尝试过什么?这是一个示例:stackoverflow.com/questions/5422488/…,它的用途略有不同,但作用相同。
  • 原谅我,但我找不到。可以发个链接吗?
  • 此时任何介绍性书籍或教程都会很有用。
  • 如果人们的分数相同怎么办?

标签: mysql


【解决方案1】:

您的查询应使用 LIMIT 以获得最佳结果:

SELECT id, name, points FROM table ORDER BY pts DESC LIMIT 3

应该做的伎俩。

Order by 将表从最高到最低排序,limit 将告诉 mysql 只获取前三个结果

您可以通过example 找到更多关于此主题的信息。 this 是一个非常接近你的问题

【讨论】:

    【解决方案2】:

    试试这个:

    SELECT * FROM tablename ORDER BY pts desc limit 3

    【讨论】:

      【解决方案3】:

      你可以使用这个查询

      SELECT CONCAT(`id` , 'Postion = ' , `name` , '=>' ,`pts` , 'pts' ) AS result FROM table ORDER BY pts DESC LIMIT 3
      

      【讨论】:

        【解决方案4】:

        这个问题我在很多地方都看过,反正查询是。

        select top 3 * from tablename order by cols_name desc

        此查询根据您的列显示前 3 行的最高值。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-12
          • 1970-01-01
          • 2020-08-12
          • 2013-11-22
          • 1970-01-01
          • 2012-09-08
          相关资源
          最近更新 更多