【问题标题】:#1093 - You can't specify target table 'tbl' for update in FROM clause [duplicate]#1093 - 您不能在 FROM 子句中指定目标表 'tbl' 进行更新 [重复]
【发布时间】:2018-06-04 21:27:57
【问题描述】:

无法执行以下查询

Update tbl SET alias_seq= (Select seq from tbl where analysed_object =
'data' order by seq LIMIT 1)

遇到错误

#1093 - 您不能在 FROM 子句中指定目标表 'tbl' 进行更新

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您无法更新子查询引用的同一数据源中的行。

    将您的查询修改为此

    UPDATE tbl SET alias_seq= (SELECT * FROM (Select seq from tbl where analysed_object = 'data' order by seq LIMIT 1) as X)
    

    这里嵌套的子查询创建了一个临时表。因此,它不算作您尝试从中更新数据的同一个表。换句话说,在MySQL 中,您不能修改在SELECT 部分中使用的同一个表。

    您可以参考这里了解更多信息 UPDATE Syntax

    【讨论】:

    • 谢谢,它对我有用
    • 但它正在为所有记录更新相同的 id
    • 现在怎么样了?
    • 问题已解决,还需要 1 个 where 子句用于外部查询
    猜你喜欢
    • 2016-05-19
    • 2015-06-08
    • 2015-07-11
    • 1970-01-01
    • 2014-07-31
    • 2016-06-23
    • 2012-01-10
    • 2013-04-09
    • 1970-01-01
    相关资源
    最近更新 更多