SQL 简单的 ORDER BY
Posted
技术标签:
【中文标题】SQL 简单的 ORDER BY【英文标题】:SQL Simple ORDER BY 【发布时间】:2010-12-25 08:00:42 【问题描述】:我是 SQL 新手,我认为这个问题应该不难回答。我有一个包含列名称、分数和排名的游戏的高分表。我想知道每次添加新分数时如何按降序对表格进行排序,以便表格始终按分数排序。
我知道这样做是错误的,但我希望这能让我的观点更清楚。
UPDATE `HSTable`.`Highscores` ORDER BY `Highscores`.`score` DESC;
解决这个问题的正确方法是什么?
还有一件事,我有没有一种方法可以设置它,使排名值始终保持在 SQL 的假设位置,例如,无论分数如何,第一名总是在顶部?
【问题讨论】:
SQL 数据库不会以特定顺序存储其数据,因此您不能对其重新排序 - 您必须定义 @ 987654322@ 当您执行SELECT
以获得您想要的订单时
【参考方案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,请在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮 ( ) 以很好地格式化语法高亮!以上是关于SQL 简单的 ORDER BY的主要内容,如果未能解决你的问题,请参考以下文章
MySql学习 —— where / having / group by / order by / limit 简单查询