是的,这是一个非常奇怪的问题,我想知道我将如何简洁地解释它。
我有一个WP插件,可以在mysql表中记录行,如下所示:
meta_id post_id meta_key meta_value
65387 605 _likes 9
然后在我的一个页面上,我正在运行查询以选择最喜欢的帖子,即。按meta_value DESC排序。现在我在我的网站上发现,每当帖子达到10时,它就不再显示为顶部,并从查询结果中消失。奇
我去了meta_value订购的数据库和(在PHPMyAdmin中)并且它确实返回9作为最高结果,没有10个出现!?
我认为可能有一件事是字段类型(meta_value),这些是设置:
# Column Type Collation Attributes Null Default
4 meta_value longtext latin1_swedish_ci Yes NULL
任何人都可以想到任何可能意味着当值为10或更高时ORDER BY无效!
由于
答案 0 :(得分:2)
如果您无法更改列数据类型,请不要担心......不需要这样做
您需要在cast
子句中仅用ORDER BY
整数值。
用户技巧:
ORDER BY meta_value+0;
OR
ORDER BY CAST(meta_value as SIGNED);
答案 1 :(得分:1)
文本字段不像数字字段那样排序。下降时(文本术语)中的10是高于10的值,因为10以1开始,并且它是1,它正在处理,而不是整数,所以9出现在10之前。