【发布时间】:2018-06-28 10:28:18
【问题描述】:
我在上面有我的查询,它可以很好地检索数据,但排序已关闭。我正在尝试按价格订购结果。不确定我是否需要添加另一个 GROUP BY 参数或者我需要添加另一个联接。其他人有同样的问题吗?
SELECT wp_posts.ID,wp_postmeta1.meta_value AS sku, wp_postmeta2.meta_value AS Price
FROM wp_posts
LEFT JOIN wp_postmeta wp_postmeta1
ON wp_postmeta1.post_id = wp_posts.ID
AND wp_postmeta1.meta_key = '_sku'
LEFT JOIN wp_postmeta wp_postmeta2
ON wp_postmeta2.post_id = wp_posts.ID
AND wp_postmeta2.meta_key = '_price'
WHERE (wp_posts.post_type = 'product'
AND wp_posts.post_status = 'publish'
AND wp_posts.post_title LIKE '%abi%')
OR (wp_posts.post_type = 'product'
AND wp_posts.post_status = 'publish'
AND wp_postmeta1.meta_value LIKE '%abi%' )
GROUP BY wp_posts.ID
ORDER BY wp_postmeta2.meta_value ASC
LIMIT 15
【问题讨论】:
-
除 wp_posts.ID 之外返回的列将是不确定的(请参阅 dev.mysql.com/doc/refman/5.7/en/group-by-handling.html),并且没有聚合函数,因此 gorup by 在这里不合适
-
您正在使用 wp_query 或自定义查询
-
我正在使用自定义查询,如果我不使用 group by,我将多次返回相同的 ID。我相信如果我使用 wp_query 我需要使用 'orderby' => 'meta_value_num',
标签: mysql wordpress sql-order-by