MySQL无法在FROM子句中指定更新目标表

标签 mysql subquery

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

在 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)

而父代 ox 则绑定(bind)到子代/变体的 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 

关于MySQL无法在FROM子句中指定更新目标表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27035154/

相关文章:

mysql - SQL 重复数据删除有帮助吗?

sql - 如何使用 SQL 识别或识别数据中的模式

mysql - 如何优化这个 MySQL 查询? (交叉连接、子查询)

python - 如何在 Sqlalchemy 中正确使用 SQL 连接/子查询

mysql - 如何在mysql中重用子查询结果

mysql - 查询优化 - WHERE 子句中的表达式顺序

mysql - 产品数据库架构重新设计

php - 我可以获得最后插入行的列吗?

php - 包含表单 _REQUEST 的 PHP 插入语句上的 SQL 语法错误

mysql - 查询效率