我遇到的情况是我必须按字母顺序(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或任何数字。只是字符串。
任何建议?
答案 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。