如何使用wordpress中的自定义mysql查询对meta_key进行排序?

时间:2014-10-25 15:48:05

标签: php mysql wordpress wpdb

我遇到的情况是我必须按字母顺序(A-Z)按州名排序。我知道我们可以通过meta_query来做到这一点,但在我的情况下,我必须使用自定义mysql查询。

我试过了: -

$quotes = $wpdb->get_results("select * from wp_akph_posts LEFT JOIN wp_akph_postmeta ON wp_akph_posts.ID=wp_akph_postmeta.post_id where wp_akph_posts.post_type='quote' Order by wp_akph_postmeta.meta_value ASC");

我得到的结果是Null first(meta_key),因为它是左连接。

我想要任何地方,TX在顶部不是NULL或任何数字。只是字符串。

任何建议?

1 个答案:

答案 0 :(得分:0)

您可以通过在语句中的列名前使用ORDER BY,使NULL最后放置-。如果你必须使用SQL而不是WP_Query,我仍然建议使用$wpdb->prefix和其他内置表名值,以防你在具有不同前缀的网站上使用它。

global $wpdb;
$sql = <<<SQL
    SELECT *
    FROM {$wpdb->posts} p 
    LEFT JOIN {$wpdb->postmeta} pm ON p.ID=pm.post_id 
    WHERE p.post_type='quote' 
    ORDER BY -pm.meta_value ASC
SQL;
$quotes = $wpdb->get_results( $sql );

MySQL的这一功能没有详细记录,但您可以在文档的注释中找到信息here