Mysql 他在骗我
对,这是一个非常奇怪的问题,我想知道我将如何简洁地解释它 我有一个WP插件,它在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篇时,它就不再显示为顶部,并从查询结果中消失。奇怪 我去了数据
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);