【发布时间】:2021-03-29 14:57:25
【问题描述】:
这似乎是一种常见的情况,但我似乎找不到任何东西。
我正在尝试在 wp_postmeta 表上复制 WordPress 数据库中的一些记录,并更改副本上的 meta_key 值。
但是,一些具有meta_key 值的行已经存在,并且带有空白的meta_value 字段。因此,在复制时,我想检查具有给定 post_id 和 meta_key 值的记录是否存在,如果存在,则更新它;如果没有,则将记录 INSERT INTO 表中。
由于它是 wp_postmeta 表,因此很多记录可能具有非唯一的 post_id 和 meta_key 值,因此我对 ON DUPLICATE KEY UPDATE 没有运气。
这是我尝试过的:
INSERT INTO wp_postmeta(post_id, meta_key, meta_value)
SELECT o.post_id, '_new_column_name', o.meta_value
FROM wp_postmeta o
WHERE o.meta_key = '_old_column_name'
AND NOT EXISTS (
SELECT * FROM wp_postmeta WHERE post_id = o.post_id AND meta_key = o.meta_key
);
此查询返回 0 个结果。
我不想简单地重命名列,因为我想将这些记录与旧列名保留在数据库中,以防万一。
我正在使用 MariaDB 10.4
【问题讨论】:
-
你的意思是你不能使用
ON DUPLICATE KEY UPDATE?
标签: mysql sql wordpress mariadb