首页 > 解决方案 > 基于相似字段,使用同一表中另一行的数据更新一行

问题描述

我正在使用 wordpress,我想将数据从自定义字段复制到另一个自定义字段。

这是表格的视觉表示:

    post_id    meta_key    meta_value
    7          shortcode   example text 
    7          video_url   
    20         shortcode   sample text 
    20         video_url   

如果他们的 post_id 匹配,我想将简码的 meta_value 复制到 video_url 的 meta_value

这是我到目前为止所拥有的,但我收到了语法错误:

UPDATE wp_postmeta
SET
    meta_value = newdata.meta_value
FROM
    (
    SELECT
        post_id,
        meta_value
    FROM wp_postmeta
    WHERE
        meta_key = 'shortcode'
    ) newdata
WHERE
    meta_key = "video_url" 
AND
    post_id = newdata.post_id

这是我得到的错误:

#1064 - You have an error in your SQL syntax; check the manual that         
corresponds to your MySQL server version for the right syntax to use near     
'FROM
(
SELECT
    post_id,
    meta_value
FROM wp_postme' at line 4

标签: mysqlsqlwordpress

解决方案


更新数据时可以使用join

UPDATE wp_postmeta old
INNER JOIN wp_postmeta new ON old.post_id = new.post_id
SET old.meta_value = new.meta_value
WHERE old.meta_key = 'video_url' AND new.meta_key = 'shortcode';

推荐阅读