如何通过一次查询更新 WP post_meta 产品销售价格,如果 _sale_price 存在则更新它,如果不存在则插入新行

问题描述 投票:0回答:1

在 WordPress 表 wp_postmeta 产品数据中存储如下:

元_id 帖子_id 元键 元值
6677055 36828 _产品_版本 4.7.0
6677056 36828 _价格 439.2
6677057 36828 _wp_trash_meta_comments_status a:0:{}
6677058 36828 _wp_desired_post_slug 笔记本-黑色-尖顶-v-硝基-vn7-591g
6677059 36828 _wxr_import_has_attachment_refs 1
6677060 36828 _wp_page_template 默认
6677049 36828 _虚拟
6677047 36828 _缺货
6677048 36828 _单独出售 是的
6677053 36828 _库存
6677052 36828 _下载_过期 -1
6677050 36828 _可下载
6677043 36828 _销售价格 439.2
6677042 36828 _常规_价格 1596

有时产品有一排

_sale_price
meta_value
=
SOME_NUMBER

销售价格的值每天都在变化,我想创建一个行为如下的 MySQL 查询:

For post_id=36828 update meta_value WHERE meta_key="_sale_price"
IF meta_key="_sale_price" doesn't exist insert it.

我尝试过这样做 - 更新旧值

439.2 -> 100

SELECT meta_value, REPLACE (meta_value,439.2,100) FROM `wp_postmeta` WHERE post_id=36828 and meta_key="_sale_price";

但这没有任何作用。

您有什么建议或者是搜索现有条目然后更新(如果存在)或插入(如果不存在)的唯一正确方法?

mysql wordpress woocommerce price
1个回答
0
投票

您需要一个更新命令

CREATE TABLE wp_postmeta (
  `meta_id` INTEGER,
  `post_id` INTEGER,
  `meta_key` VARCHAR(31),
  `meta_value` VARCHAR(37)
);

INSERT INTO wp_postmeta
  (`meta_id`, `post_id`, `meta_key`, `meta_value`)
VALUES
  ('6677055', '36828', '_product_version', '4.7.0'),
  ('6677056', '36828', '_price', '439.2'),
  ('6677057', '36828', '_wp_trash_meta_comments_status', 'a:0:{}'),
  ('6677058', '36828', '_wp_desired_post_slug', 'notebook-black-spire-v-nitro-vn7-591g'),
  ('6677059', '36828', '_wxr_import_has_attachment_refs', '1'),
  ('6677060', '36828', '_wp_page_template', 'default'),
  ('6677049', '36828', '_virtual', 'no'),
  ('6677047', '36828', '_backorders', 'no'),
  ('6677048', '36828', '_sold_individually', 'yes'),
  ('6677053', '36828', '_stock', NULL),
  ('6677052', '36828', '_download_expiry', '-1'),
  ('6677050', '36828', '_downloadable', 'no'),
  ('6677043', '36828', '_sale_price', '439.2'),
  ('6677042', '36828', '_regular_price', '1596');
Records: 14  Duplicates: 0  Warnings: 0
SELECT `meta_id`, `post_id`, `meta_key`, `meta_value`
  FROM `wp_postmeta` 
  WHERE post_id=36828 and meta_key="_sale_price";

元_id 帖子_id 元键 元值
6677043 36828 _销售价格 439.2
UPDATE `wp_postmeta` 
  SET meta_value = 100
WHERE post_id=36828 and meta_key="_sale_price"
Rows matched: 1  Changed: 1  Warnings: 0
SELECT `meta_id`, `post_id`, `meta_key`, `meta_value`
  FROM `wp_postmeta` 
  WHERE post_id=36828 and meta_key="_sale_price";

元_id 帖子_id 元键 元值
6677043 36828 _销售价格 100

小提琴

© www.soinside.com 2019 - 2024. All rights reserved.