【问题标题】:Cannot order posts by meta value无法按元值排序帖子
【发布时间】:2020-01-13 19:30:51
【问题描述】:

我正在尝试获取 Wordpress 帖子的列表,并使用 meta_key = "zoacres_property_price" 以 DESC 顺序对它们进行排序,所以我这样做了:

SELECT SQL_CALC_FOUND_ROWS p.* 
                      FROM wpps_posts p
                     CROSS
                      JOIN wpps_postmeta m
                     INNER
                      JOIN wpps_term_relationships r
                        ON p.ID = r.object_id
                     WHERE r.term_taxonomy_id IN (76) 
                       AND p.post_type = 'zoacres-property' 
                       AND p.post_status = 'publish'  
                       AND m.meta_key = 'zoacres_property_price'
                     GROUP 
                        BY p.ID 
                     ORDER 
                        BY m.meta_value ASC 
                    LIMIT 6, 6

不幸的是,我收到了这个错误:

on 子句中的未知列 wpps_posts.ID

我做错了什么?该列存在

【问题讨论】:

  • 请注意,在没有任何聚合函数的情况下,GROUP BY 子句永远不合适,它会使前面的所有内容变得毫无意义。
  • @Strawberry 谢谢你的提示,我会注意的

标签: mysql sql wordpress


【解决方案1】:

永远不要FROM 子句中使用逗号!

我猜您实际上是想根据其他两个表中的条件过滤帖子。所以,我怀疑你想要LEFT JOIN

SELECT SQL_CALC_FOUND_ROWS wpps_posts.* 
FROM wpps_posts p JOIN
     wpps_term_relationships tr
     ON p.ID = tr.object_id AND tr.term_taxonomy_id IN ('76') JOIN
     wpps_postmeta pm
     ON p.ID = pm.post_id
WHERE p.post_type = 'zoacres-property' AND
      p.post_status = 'publish' 
      pm.meta_key = 'zoacres_property_price'
ORDER BY pm.meta_value ASC
LIMIT 6, 6

【讨论】:

  • 非常感谢你
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-10
  • 2017-11-13
  • 2017-06-29
  • 1970-01-01
  • 1970-01-01
  • 2020-01-30
相关资源
最近更新 更多