我正在尝试根据名为“points”的meta_key显示所有用户,如下所示:
$wpdb->get_col($wpdb->prepare("
SELECT user_id, meta_key = 'points', meta_value
FROM $wpdb->usermeta
ORDER BY meta_value DESC
LIMIT $limit OFFSET {$paginate->offset()}"));
用户显示正常,但订单不起作用,meta_value等于1到∞的数字。那么,我应该如何让它发挥作用?感谢。
PS:这是输出:
Array ( [0] => 1 [1] => 2 [2] => 4 )
所以我相信是按照ID订购的。
答案 0 :(得分:6)
SELECT user_id, meta_value FROM $wpdb->usermeta WHERE meta_key = 'points' ORDER BY CAST(meta_value AS SIGNED) DESC LIMIT
CAST(meta_value AS SIGNED)将从LONG TEXT转换为INT。它现在有效。
答案 1 :(得分:1)
如果我对mysql没有完全错误,你必须将 meta_key ='points'添加到where子句中。 将查询重写为:
SELECT user_id,meta_value
FROM $ wpdb-> usermeta
在哪里meta_key ='points'
ORDER BY meta_value DESC
LIMIT $ limit OFFSET {$ paginate-> offset()}