在 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";
但这没有任何作用。
您有什么建议或者是搜索现有条目然后更新(如果存在)或插入(如果不存在)的唯一正确方法?
您需要一个更新命令
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 |