问题MySQL了的-我可以使用natsort修复它吗?
题
我需要使用自然排序与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,我已经使用。
不隶属于 StackOverflow