我需要使用自然排序与MySQL结果,因为它目前各种各样我INT值如下:

  • 1
  • 123
  • 1256
  • 22
  • 231

[等]

同时我会需要这种喜欢

  • 1
  • 22
  • 231
  • 1256

我知道的"natsort"的功能,但是它不工作一MySQL查询结果。我可以如何进行排序(自然的),这是可以做到这一点内查询?

谢谢你的帮助!

编辑:例查询 $result = mysql_query("SELECT * FROM forums ORDER BY 'posts' DESC;");

不完全确定如果我用DESC有是有效的,但它并没有扔一个错误所以它必须被罚款。不幸的是,它似乎变化描述为非洲人服务委员会也没有影响...

有帮助吗?

解决方案

查询,你已经发布有的排序由一个不断串的表达,而不是列名或位置。无论是使用反引号,以引用,或者采取了行情:

SELECT * FROM forums ORDER BY `posts` DESC

或者也许

SELECT * FROM forums ORDER BY posts DESC

就能解释为什么改变之间的ASC和DESC没有任何影响。

初步回答是:

排列顺序描述表明INT价值观是实际上被储存作为一个性格类型(或者也许转换为字之前的排序)。

检查是否是将数据存储在一个数字或字类型。如果可能使用的数值类型,则自然排列顺序将是你所需要的。如果你 不能 改变基本数据类型可INT,然后你可以这样做在你的查询(例如使用 ),可能是在成本的性能。

其他提示

如果员额是一个非INT柱,你可以试试这个:

SELECT * FROM forums ORDER BY CAST(`posts` AS INT) DESC

还有一个看看 http://drupal.org/project/natsort.这是一个推理模块,可用于促进MySQL排序。

这个问题 有一个答案MySQL,我已经使用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top