Mysql 他在骗我

Mysql 他在骗我,mysql,sql-order-by,Mysql,Sql Order By,对,这是一个非常奇怪的问题,我想知道我将如何简洁地解释它 我有一个WP插件,它在mysql表中记录行,如下所示: meta_id post_id meta_key meta_value 65387 605 _likes 9 然后在我的一个页面上,我运行了一个查询来选择最喜欢的帖子,即ORDER by meta_value DESC。现在我在我的网站上注意到,每当一篇帖子达到10篇时,它就不再显示为顶部,并从查询结果中消失。奇怪 我去了数据

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

我有一个WP插件,它在mysql表中记录行,如下所示:

meta_id    post_id    meta_key    meta_value 
65387      605        _likes      9 
然后在我的一个页面上,我运行了一个查询来选择最喜欢的帖子,即ORDER by meta_value DESC。现在我在我的网站上注意到,每当一篇帖子达到10篇时,它就不再显示为顶部,并从查询结果中消失。奇怪

我去了数据库(在PHPMyAdmin中)按meta_值排序,结果确实返回了9,10个结果都没有出现

我认为可能是字段类型(meta_值),以下是设置:

#   Column      Type        Collation           Attributes  Null    Default
4   meta_value  longtext    latin1_swedish_ci               Yes     NULL    
当值为10或以上时,有人能想到任何可能意味着订单不起作用的事情吗


谢谢

文本字段不像数字字段那样排序。降序时(以文本形式)9比10大,因为10从1开始,它是1,而不是整数,所以9出现在10之前。

如果无法更改列数据类型,请不要担心。。。没必要这么做

您只需在
ORDER BY
子句中以整数形式对其值进行强制转换

用户技巧:

ORDER BY meta_value+0;


哦。好啊因为WordPress将此字段用于多个meta_值,所以我无法真正更改类型,我能做些什么吗?参见
ORDER BY CAST(meta_value as SIGNED);