在研究数据库整理问题时,我注意到一些奇怪的排序行为。根据实际查询,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
时,我的查询参数中是否应该更改某些内容?
答案 0 :(得分:0)
lastname_clause
无效。试试这个:
'meta_key' => 'lastname',
'orderby' => array(
'meta_value' => 'ASC',
'title' => 'DESC' // or whatever you want to sort as second
)
有关此内容的更多信息 - > Orderby Parameters