根据 2 个键更新 post_meta 值 - Wordpress
Posted
技术标签:
【中文标题】根据 2 个键更新 post_meta 值 - Wordpress【英文标题】:Update post_meta value based on 2 keys - Wordpress 【发布时间】:2019-02-23 15:12:07 【问题描述】:我在 WooCommerce 中有 5000 多种产品,我正在寻找一个 SQL 查询来根据他们的 SKU 设置他们的条形码。 “条形码”和“sku”都是自定义帖子元。基本上是这样的:
UPDATE wp_postmeta SET barcode='x' WHERE sku='y';
但它不起作用,因为条形码和 sku 不是真正的表格列。那么,任何人都可以提供一个有效的查询吗?我是 SQL 新手。谢谢!
【问题讨论】:
如何设置barcode和sku?因为每个产品必须有不同的一次。 你是一次执行这些吗?显然,sku 和条形码是 wp_postmeta 中的两个单独的行,由 post_id 链接,但 mysql won't let you query the table you're updating e.g.UPDATE wp_postmeta ... WHERE post_id = (SELECT post_id FROM wp_postmeta WHERE ...
。因此,您可能必须运行两个查询:一个从 meta_key='sku' 和 meta_value='y' 查找 post_id,然后一个更新 wp_postmeta,其中 meta_key='barcode' 和 post_id 是您刚刚找到的那个.
@dipmala 我有一个包含所有 SKU 和条形码的 excel 文件(当然,每个产品都是唯一的)。我只是将它们复制粘贴到查询中。
【参考方案1】:
sku 和条形码将存储在由 post_id 链接的两个单独的行中。这是您在 MySQL (borrowed from this answer) 中基于同一表中的另一行更新一行时需要使用的语法:
UPDATE wp_postmeta a
JOIN wp_postmeta b on b.post_id = a.post_id
SET a.meta_value = 'y'
WHERE a.meta_key = 'barcode'
AND b.meta_key = 'sku'
AND b.meta_value = 'x';
即查询表别名 b 上的 ID,然后更新表别名 a 上的条形码。
(但我没有安装 WooCommerce 来测试这个 - 请先备份您的数据库!等等)
【讨论】:
以上是关于根据 2 个键更新 post_meta 值 - Wordpress的主要内容,如果未能解决你的问题,请参考以下文章
查询 post_meta 日期而不是 post_date_gmt