2010-11-23 90 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