Wordpress $ wpdb-> usermeta按meta_value排序

时间:2010-11-23 13:05:11

标签: wordpress wpdb

我正在尝试根据名为“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订购的。

2 个答案:

答案 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()}