【发布时间】:2018-06-12 19:50:05
【问题描述】:
我正在尝试通过 meta_value 订购 wp_query
我使用以下参数
array(
'post_type' =>'event',
'posts_per_page' => -1,
'meta_query' => array(
'dates_query' => array(
'key' => 'dates',
'value' => date(time()),
'compare' => '>='
)
),
'orderby' => 'dates_query',
'order' => 'ASC',
'paged' => 1
);
这是由 wp_query 生成的请求
SELECT wp_posts.* FROM wp_posts
INNER JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id )
WHERE 1=1 AND ( ( wp_postmeta.meta_key = 'dates'
AND wp_postmeta.meta_value >= '1514960717' ) )
AND wp_posts.post_type = 'event'
AND (wp_posts.post_status = 'publish'
OR wp_posts.post_status = 'completed'
OR wp_posts.post_status = 'acf-disabled')
GROUP BY wp_posts.ID
ORDER BY CAST(wp_postmeta.meta_value AS CHAR) ASC
不幸的是,结果是错误的,当尝试手动执行查询时,我得到以下错误:
Expression #1 of ORDER BY clause is not in GROUP BY clause and contains non-aggregated column
我知道有一个选项可以禁用“only_full_group_by”,但我想知道在这种情况下这是否是最佳做法
谢谢
【问题讨论】:
-
你为什么首先与
GROUP BY聚合?您从未在查询中实际使用它。没有看到任何相反的东西,我建议你摆脱GROUP BY。