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的主要内容,如果未能解决你的问题,请参考以下文章

SQL注入 order by后的注入(Less-46)

MySql学习 —— where / having / group by / order by / limit 简单查询

SQL的GROUP BY 与 Order By

LINQ to SQL 实现 GROUP BY聚合ORDER BY

带有 order by 子句的 SQL 查询

如何在 UNION 之间的 SQL 中放置 ORDER BY 子句