【发布时间】:2018-07-01 01:01:21
【问题描述】:
我有一个 WooCommerce 商店,我希望运行一个 MySQL 查询来删除特定公司的所有 wp_posts(订单),它包含在 wp_postmeta 表的 meta_key / meta_value 对中。
到目前为止我做了什么
我读过这篇文章:Mysql delete all posts that have a given meta_key,它非常有用,我已经编写了这段代码:
delete a,b,c,d,e,f,g,h,i /* This bit tells us what to delete*/
FROM wp2_posts a
LEFT JOIN wp2_term_relationships b ON ( a.ID = b.object_id )
LEFT JOIN wp2_postmeta c ON ( a.ID = c.post_id )
LEFT JOIN wp2_term_taxonomy d ON ( d.term_taxonomy_id = b.term_taxonomy_id )
LEFT JOIN wp2_terms e ON ( e.term_id = d.term_id )
LEFT JOIN wp2_woocommerce_order_items f ON ( a.ID = f.order_id )
LEFT JOIN wp2_woocommerce_order_itemmeta g ON ( f.order_item_id = g.order_item_id )
LEFT JOIN wp2_comments h ON ( a.ID = h.comment_post_ID )
LEFT JOIN wp2_commentmeta i ON ( h.comment_ID = i.comment_id )
WHERE a.ID IN /* This provides the args for deletion*/
( SELECT post_id
FROM wp2_postmeta
WHERE meta_key LIKE '_shipping_company'
AND meta_value LIKE 'Acme Corp'
)
我在哪里挣扎
但是当我尝试在 SQL pro 中运行查询时得到的响应是“您无法在 FROM 子句中指定目标表 'c' 进行更新”。
我假设它是说我不能删除我用作参数的东西。
任何想法都非常感谢,劳拉。
【问题讨论】:
-
a,b,c,d,e ..应该是什么?别名?那么你想删除所有的表吗?还是只是行? (或表中的分区 -> dev.mysql.com/doc/refman/5.7/en/delete.html) -
嗨 Edwin,a, b, c, d, e 是分配给“FROM”部分中每个表的别名。所以 wp2_posts 设置为 a.这只是简写。
-
所以如果你想删除所有表格,只需使用
drop,但我想你只想删除所有帖子行 -
试试
delete a.*,b.*,c.*,d.*,e.*,f.*,g.*,h.*,i.* -
谢谢埃德温。恐怕存在同样的问题。
标签: php mysql wordpress woocommerce