Wordpress:与meta_query与meta_key的意外顺序差异

时间:2017-02-16 18:17:00

标签: database wordpress sorting collation

在研究数据库整理问题时,我注意到一些奇怪的排序行为。根据实际查询,order by子句的差异在使用meta_query而不仅仅是meta_key参数时会产生不同的结果。

在我的情况下,我有一个专门的meta_key用于为此目的的姓氏。

'meta_key' => 'lastname',
'orderby' => 'meta_value',
'order' => 'ASC'

这将产生以下order by子句,它按预期工作:

ORDER BY wp_postmeta.meta_value ASC

另一方面,使用

'meta_query' => array(
    'lastname_clause' => array(
        'key' => 'lastname',
        'compare' => 'EXISTS'
    )
),
'orderby' => array(
    'lastname_clause' => 'ASC'
)

产生

ORDER BY CAST(wp_postmeta.meta_value AS CHAR) ASC

这是预期的行为吗?在使用meta_query时,我的查询参数中是否应该更改某些内容?

1 个答案:

答案 0 :(得分:0)

lastname_clause无效。试试这个:

'meta_key' => 'lastname',
'orderby' => array(
    'meta_value' => 'ASC',
    'title' => 'DESC' // or whatever you want to sort as second
)

有关此内容的更多信息 - > Orderby Parameters