Pergunta

Estou tentando exibir todos os usuários com base em um meta_key chamado "pontos" como este:

$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()}"));

Os usuários são exibidos corretamente, mas o pedido não está funcionando, o meta_value é igual a um número de 1 a ∞. Então, como devo fazê -lo funcionar? Obrigado.

PS: Esta é a saída:

Array ( [0] => 1 [1] => 2 [2] => 4 ) 

Então, acredito que é ordenado por ID.

Foi útil?

Solução

SELECT user_id, meta_value FROM $wpdb->usermeta WHERE meta_key = 'points' ORDER BY CAST(meta_value AS SIGNED) DESC LIMIT

Elenco (meta_value conforme assinado) Will Covert de LongText para Int. Agora está funcionando.

Outras dicas

Se não estou completamente errado sobre o MySQL, você deve adicionar o meta_key = 'pontos' para a cláusula onde. Reescreva a consulta para:

Selecione User_id, meta_value
De $ WPDB-> UserMeta
Onde meta_key = 'pontos'
Ordem por meta_value desc
LIMIT $ Offset {$ paginate-> offset ()}

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top