我知道这里有类似的帖子,但是我还没有找到适合我的问题的帖子。

在MySQL表oxarticles中,我有从外部程序导入的文章。该程序将每篇文章发送两次作为父文章,并作为变体发送,其中某些列包含其他数据。

我想规范化表,将其他列数据写入父项。

我的更新查询如下所示:

UPDATE  oxarticles
    SET     oxean = (SELECT oxean FROM oxarticles WHERE oxparentid = oxid),
            oxstock = (SELECT oxstock FROM oxarticles WHERE oxparentid = oxid),
            oxinsert = (SELECT oxinsert FROM oxarticles WHERE oxparentid = oxid)


而父母的氧化物则绑定到孩子/变体的列oxparentid。

不幸的是,我收到错误:

Your can’t specify target table for update in FROM clause


请问该如何解决?

最佳答案

您可以这样做:

UPDATE oxarticles a
    LEFT JOIN oxarticles b ON a.oxid=b.oxparentid
SET a.oxean =b.oxean,
    a.oxstock  =b.oxstock ,
    a.oxinsert  =b.oxinsert

07-24 21:34