1

是的,这是一个非常奇怪的问题,我想知道我将如何简洁地解释它。

我有一个 WP 插件,可以像这样在 mysql 表中记录行:

meta_id    post_id    meta_key    meta_value 
65387      605        _likes      9 

然后在我的一个页面上,我正在运行查询以选择最喜欢的帖子,即。按 meta_value DESC 排序。现在我在我的网站上注意到,每当帖子达到 10 时,它就不会再出现在顶部并从查询结果中消失。奇怪的。

我去了数据库并(在 PHPMyAdmin 中)按 meta_value 排序,它确实返回了 9 作为最高结果,但没有出现 10 个!?

我认为可能是字段类型(meta_value),这些是设置:

#   Column      Type        Collation           Attributes  Null    Default
4   meta_value  longtext    latin1_swedish_ci               Yes     NULL    

任何人都可以想到任何可能意味着当值为 10 或更高时 ORDER BY 不起作用!?

谢谢

4

2 回答 2

2

如果您无法更改列数据类型,请不要担心......无需这样做

你只需要 cast它在ORDER BY 子句中的整数值。

用户技巧:

ORDER BY meta_value+0;

或者

ORDER BY CAST(meta_value as SIGNED);
于 2012-04-07T09:17:54.010 回答
1

文本字段不像数字字段那样排序。9 在降序时(用文本术语)比 10 的值更高,因为 10 从 1 开始,它是 1,而不是整数,所以 9 出现在 10 之前。

于 2012-04-07T09:13:03.037 回答