Wordpress $ wpdb-> usermeta sortieren nach meta_value
Frage
Ich versuche, alle Benutzer anzuzeigen, basierend auf einem meta_key „Punkte“ wie folgt aufgerufen:
$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()}"));
Der Anwender richtig angezeigt werden, aber die Reihenfolge nicht funktioniert, ist meta_value auf eine Zahl von 1 gleich 8. Also, wie soll ich es an der Arbeit? Danke.
PS: Dies ist die Ausgabe:
Array ( [0] => 1 [1] => 2 [2] => 4 )
Also ich glaube, durch ID bestellt werden.
Lösung
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 UNTERZEICHNET) wird von LONG auf INT verdeckte. Es funktioniert jetzt.
Andere Tipps
Wenn ich über mysql nicht völlig falsch bin, müssen Sie fügen Sie die meta_key = ‚Punkte‘ auf die where-Klausel. Schreiben Sie die Abfrage an:
SELECT user_id, meta_value
AUS $ wpdb-> usermeta
WHERE meta_key = 'Punkte'
ORDER BY meta_value DESC
LIMIT $ limit OFFSET {$ paginate-> Offset ()}