【问题标题】:SQL Simple ORDER BYSQL 简单的 ORDER BY
【发布时间】:2010-12-25 08:00:42
【问题描述】:

我是 SQL 新手,我认为这个问题应该不难回答。我有一个包含列名称、分数和排名的游戏的高分表。我想知道每次添加新分数时如何按降序对表格进行排序,以便表格始终按分数排序。

我知道这样做是错误的,但我希望这能让我的观点更清楚。

UPDATE `HSTable`.`Highscores` ORDER BY `Highscores`.`score` DESC;

解决这个问题的正确方法是什么?

还有一件事,我有没有一种方法可以设置它,使排名值始终保持在 SQL 的假设位置,例如,无论分数如何,第一名总是在顶部?

【问题讨论】:

  • SQL 数据库不会以特定顺序存储其数据,因此您不能对其重新排序 - 您必须定义 @ 987654322@ 当您执行SELECT 以获得您想要的订单时

标签: sql sql-order-by


【解决方案1】:

通常我们在从表中获取数据时使用 order by

所以我们使用

SELECT * FROM `HSTable` ORDER BY `score` DESC

【讨论】:

  • 如果您发布代码或 XML,在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮 ( { } ) 以很好地格式化语法高亮!
【解决方案2】:

使用 RANK 或 DENSE_RANK 等排名函数对结果进行排名。为了获得更好的性能,您可以添加以分数降序开头的聚集索引。

【讨论】:

    【解决方案3】:

    您可以使用SELECT 子句获得有序结果:

    SELECT * FROM `HSTable` ORDER BY `score` DESC
    

    【讨论】:

      【解决方案4】:

      我认为数据库表中数据的顺序并不重要,因为当您查询数据时,您可以按照自己喜欢的方式对其进行排序。您希望将数据以正确的顺序存储在数据库中的原因是什么?

      【讨论】:

        【解决方案5】:

        这不是在 SQL 中选择记录的正确方法。改用这个:

        SELECT * FROM `tablename` ORDER BY `id` DESC
        

        【讨论】:

        • 如果您发布代码或 XML,在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮 ( { } ) 以很好地格式化语法高亮!
        猜你喜欢
        • 1970-01-01
        • 2022-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-09
        • 1970-01-01
        相关资源
        最近更新 更多