【问题标题】:Mysql delete all posts that have a given meta_key [duplicate]Mysql删除所有具有给定元键的帖子[重复]
【发布时间】:2014-10-17 11:43:35
【问题描述】:

我有一个 wordpress 网站,其中有一些 meta_key 分配给我的帖子。我想删除mysql中所有具有meta_keyacest_meta的帖子。使用此 SQL 命令:

SELECT `post_id`
FROM `wp_postmeta`
WHERE `meta_key` 
LIKE 'acest_meta' 
ORDER BY `wp_postmeta`.`post_id` ASC

我可以看到所有包含给定 meta_key 的 id,但我没有删除复选框。我在顶部看到一条消息,上面写着“当前选择不包含唯一列。网格编辑、复选框、编辑、复制和删除功能不可用。”我怎样才能删除所有这些帖子?

【问题讨论】:

    标签: mysql sql wordpress


    【解决方案1】:

    您可以使用 IN() 语句通过 select 删除,然后将 select 放入 IN 中

    DELETE FROM `wp_postmeta` 
    WHERE `post_id` IN 
    (   SELECT `post_id`
        FROM `wp_postmeta`
        WHERE `meta_key` LIKE 'acest_meta' 
    )
    

    【讨论】:

      【解决方案2】:

      使用Mysql查询可以在删除查询中使用join

      DELETE p.*,w.*
      FROM `wp_postmeta` w
      JOIN wp_posts p
       ON(p.ID = w.`post_id`)
      WHERE w.`meta_key` LIKE 'acest_meta'
      

      以上查询将删除所有帖子,其元数据包含一个 meta_key 作为 acest_meta

      【讨论】:

      • +1 以不同的方式使用连接 :)
      【解决方案3】:
      delete from wp_postmeta
       where post_id in
             (SELECT post_id FROM wp_postmeta WHERE meta_key = 'acest_meta')
      

      【讨论】:

      • 你也一样 :) 我们有同样的想法 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-09
      • 1970-01-01
      • 2017-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多