sql查询前10条记录

mat*_*tew 7 mysql sql

任何人都可以帮我一个简单的SQL查询?

这就是场景:我需要找到参加更多比赛的参赛者.比赛一直在不同的城市和不同的专业.下表更好地显示了我的意思:

亚军:约翰怀特

        -----------------------------------------
        |  NY  |  Rome |  Madrid |  Los Angeles |
 ------------------------------------------------
 | 100m |  x   |       |   x     |              |
 ------------------------------------------------
 | 200m |      |  x    |         |      x       |
 ------------------------------------------------
 | 400m |      |       |         |              |
 ------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

简而言之,我有一个包含以下字段的数据库:名称,城市,规格,我需要找到填充更多插槽的跑步者,参加更多不同比赛的跑步者.在"spec"字段中,如果他分别参加每个专业,则数据为100m或200m或300m.在该示例中,结果是John White - > 4

那么,我如何查询列出参加大部分比赛的前十名参赛者?我需要一张表格,显示赛跑者的名字和他参加的比赛数量.

在此先感谢您的帮助.如果您需要更多信息,请询问.

再见,马特

更新:简单来说,我想知道具有最大数量的城市规格字段的不同组合的前10名列表.我认为这是解释我答案的最佳逻辑方式.

以下是数据库的示例:

name     city      spec
-----------------------
john     NY         100m
john     Rome       200m
john     Madrid     100m
john     Los Ang    200m
mike     Rome       200m
mike     Rome       100m
Run Code Online (Sandbox Code Playgroud)

我正在寻找的"十大名单"将是以下内容:

john   4
mike   2
Run Code Online (Sandbox Code Playgroud)

我希望现在一切都好.再见!

Nik*_*vić 11

也许你正在寻找这样的东西:

select name, count(distinct city) as attended
  from competitions
 group by name
 order by 2 desc
 limit 10;
Run Code Online (Sandbox Code Playgroud)

此查询返回竞争对手及其参与的事件数,不包括重复项(同一事件中的100和200米).如果你想计算所有外观删除不同的关键字,并且如果你想显示多功能性列表替换具有不同专业的城市.查询的工作原理是计算属于同一名称的所有行,按该计数递减排序并将输出限制为十行.

更新:我认为OP需要通过外观列出前10名竞争对手.因此,竞争对手的每条记录都算作一个:

select name, count(name) as attended
  from competitions
 group by name
 order by 2 desc
 limit 10;
Run Code Online (Sandbox Code Playgroud)

白先生将获得4分,而参加所有3个学科的所有4个比赛的任何人将获得12分.

  • 然后我的回答回答了你的问题:-) (2认同)
  • 在那种情况下,把数量(不同的城市,规格) (2认同)
  • `如果我有两个相同的城市规格组合与john`相关 - >我想知道`john`如何在同一场比赛中跑了两次:) (2认同)

Kyl*_*cey 0

城市或事件不是无关紧要的吗?难道你不能只计算一个城市中的协会数量吗?看起来每个活动协会都有一个城市,反之亦然?我假设某个地方还有另一个或两个连接表。但我会选择该人在该连接中出现的次数。

SELECT COUNT(*)
FROM city_runner
WHERE runnerid = ? #The runner's id? You gave so little for me to work with...
Run Code Online (Sandbox Code Playgroud)

然后使用您的应用程序语言来确定谁是最好的......