【问题标题】:order post according to custom field position根据自定义字段位置订购帖子
【发布时间】:2016-07-19 07:21:27
【问题描述】:

我想要根据 Wordpress 中的自定义字段列出的帖子。

这里有 9 个帖子,包含 3 个不同的元值(中间、左上、左下),元键是“位置”

这里是帖子表

Wp_posts:

帖子 ID 标题 描述 1个帖子1 ----- 2个帖子2 ----- 3 帖子3 ----- 4 帖子4 --- 5个帖子5 ---- 6 帖子6 -- 7 帖子7 ---- 8个帖子8 --- 9 帖子9 ---- 10 后 10 ---

这里是 wp_postmeta 表:

meta_id post_id Meta_key meta_value 1 1 个位置 左上 2 2位左下 3 3 位左上 4 4位左下 5 5位中间 6 6位左下 7 7 位左上 8 8位左下 9 9位左上 10 10位中间

现在我想根据位置排序(中、左下、左上)得到一个列表

喜欢这个

post_id 标题 meta_value met_key 5 岗位5 中间岗位 2 柱 2 左下位置 1 个帖子 1 个左上角 10 岗位10 中间岗位 4 柱 4 左下位置 3 职位3 左上职位 6 柱 6 左下位置 7 职位7 左上职位 8 柱 8 左下位置 9 职位9 左上职位

我不是 sql 查询专家。

【问题讨论】:

  • 你昨天问的不一样吗?
  • 最后一天,不清楚所以更改后解决方案不起作用
  • @splash58 ,你能帮忙解决这个问题吗,我试过了,但我的查询不能加入两个表。

标签: php mysql wordpress


【解决方案1】:

基于this answer

SELECT post_id, title, meta_value, Meta_key
FROM (
   SELECT post_id, meta_value, Meta_key,
          @grp := IF(@pos = meta_value, @grp + 1,
                     IF(@pos := meta_value, 1, 1)) AS grp
   FROM wp_postmeta
   CROSS JOIN (SELECT @grp := 0, @pos := '') AS vars
   WHERE Meta_key = "position"
   ORDER BY meta_value) AS t
LEFT JOIN Wp_posts 
   ON t.post_id =  Wp_posts.PostID
ORDER BY grp, FIELD(meta_value, 'Middle', 'Left Bottom', 'left Top')   

demo

【讨论】:

    【解决方案2】:

    应该这样做:

    ORDER BY FIELD(meta_value,'Middle','Left Bottom','Left Top')

    更多关于 ORDER BY FIELD 功能的信息:http://www.electrictoolbox.com/mysql-order-specific-field-values/

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    • 2020-08-25
    • 2011-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多