我正在使用wp_query获取帖子列表,并使用meta_query能够使用orderby对它们进行排序。以下是我使用meta_query首先根据元值是否存在而返回结果的重要部分。
$args['meta_query'] = array (
'relation' => 'OR',
array(
'key' => 'meta_field',
'compare' => 'NOT EXISTS'
),
array(
'key' => 'meta_field',
'compare' => 'EXISTS'
)
);
$args['orderby'] = array(
'meta_value' => 'ASC',
'title' => 'ASC'
);
然后,orderby尝试首先通过meta_value(首先显示空值)进行排序,然后再通过帖子标题进行排序。 meta_field是包含成绩的列,因此meta_value的选项为“杰出”,“良好”,“需要改进”和“不足”。
因此,当前,它将首先返回具有空值的结果,然后其余的将按字母顺序对meta_value进行排序,因此“好”,“不足”,“突出”,需要改进”。这是有道理的,因为它在meta_value中使用了“ ASC”。
但是,我真的需要按照最佳成绩的逻辑顺序进行订购。我当时在想可能有一种以正确顺序排列字符串数组的方法,该方法可以某种方式用于引用meta_value。
如果只能在MySQL中完成此操作,那么将其合并的最佳方法是什么?