【问题标题】:problem with SQL statement in high score database高分数据库中的SQL语句问题
【发布时间】:2009-04-17 19:48:10
【问题描述】:

我在 java 中创建了一个字母游戏,我需要在其中包含一个高分功能。通过 JDBC 使用 Microsoft 访问数据库。 数据库中的表包含以下内容

Table name Easy

fields
Name
Score 
Time 

需要一条 SQL 语句,按照最高分和最低时间的顺序显示前 5 个分数。 例如。 如果有两名球员得分 20,则时间较短的球员应该在第一名,但如果有一名球员得分 21,无论时间如何,他都应该在第一名。

【问题讨论】:

  • 我们不会为你做作业,对吧?
  • 您可以制作整个游戏,但不知道如何进行基本选择?
  • 这个想法也闪过我的脑海,但是将表格命名为“简单”让我觉得这可能是一个实际问题,就像他为每个难度级别放入表格但他不知道足够的 sql 来限制到 5 分或按 2 列排序。
  • 您真的需要存储游戏中获得的所有分数吗?与其处理 Access 的开销,不如将前 X 分数保留在文件中并根据需要更新文件可能更简单(而且我是一名数据库专家,所以当它们适用时,我倾向于倾向于 DB 解决方案) .如果你真的用旧分数做一些事情,比如计算平均分数,那就不同了。

标签: sql ms-access


【解决方案1】:
select top 5 
    name,
    score,
    time

from easy

order by score desc, time asc

【讨论】:

    【解决方案2】:

    这张桌子被命名为Easy,这似乎表明它是为玩简单模式的玩家准备的。我建议添加一列来表示困难,并且只有一个大的HighScores 表。

    SELECT TOP 5 
      name, score, time
    FROM HighScores
    WHERE difficulty = 'Easy'
    ORDER BY score desc, time asc
    

    【讨论】:

      【解决方案3】:

      不是您问的,但您可能想知道答案因不同的数据库而异。例如,在 Oracle 中,

      select
          name,
          score,
          time
      from easy
      where rownum <= 5
      order by score desc, time asc
      

      在 PostgreSQL 中,它会是

      select
          name,
          score,
          time
      from easy
      order by score desc, time asc
      limit 5
      

      【讨论】:

        【解决方案4】:
        Select top 5 Name
        From Easy
        order by score desc, time asc
        

        【讨论】:

          【解决方案5】:
          SELECT TOP 5 Score, Time
          FROM Easy
          ORDER BY Score DESC, Time
          

          【讨论】:

            【解决方案6】:

            其他人提出了SELECT TOP 5... 解决方案,但fwiw,此语法是Microsoft SQL Server 和Sybase 支持的非标准SQL。如果您使用其他品牌的数据库,它将无法正常工作。您应该编辑您的问题并指定您使用的数据库品牌和版本,因为根据这些信息,答案可能会有所不同。

            【讨论】:

            • 问题中的第二句是“通过 JDBC 使用 Microsoft 访问数据库”。
            • 很好!我添加了那个标签。
            【解决方案7】:
            select top5 Score, Time from Easy order byScore desc, Time
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2014-12-22
              • 1970-01-01
              • 2011-04-23
              • 1970-01-01
              • 2010-09-25
              • 1970-01-01
              • 2011-09-12
              • 2015-02-25
              相关资源
              最近更新 更多