2010-11-23 84 views
3

我想基于一个叫做“点”这样的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排序。

回答

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签名)将从LONGTEX隐蔽T到INT。它现在有效。

1

如果我对mysql没有完全错误,则必须将meta_key ='points'添加到where子句。 重写查询到:

SELECT USER_ID,meta_value
FROM $ wpdb-> usermeta
WHERE meta_key = '点'
ORDER BY meta_value DESC
$ LIMIT限制OFFSET {$ paginate->偏移()}

+0

是的,这是正确的,但排序不起作用,因为meta_value设置为LONGTEXT,所以...我正在寻找一个解决方案。如果你知道一个,请告诉我。谢谢! – 2010-11-23 16:56:35