MySQL更新子选择问题

时间:2015-07-14 15:23:43

标签: mysql sql-update

在发布我的问题之前,我想告诉大家,这不是thisthat的重复,因为我不想解决具体问题,而是我渴望理解一个人。阅读docs,我可以看到关于update命令中子查询的两个非常有趣的异常示例:

  1. UPDATE t1 SET column2 = (SELECT MAX(column1) FROM t1);

  2. 错误是

      

    错误1093(ER_UPDATE_TABLE_USED)SQLSTATE = HY000消息=“你   不能在FROM子句“

    中为更新指定目标表'x'

    2

    SELECT * FROM t1 WHERE s1 IN (SELECT s2 FROM t2 ORDER BY s1 LIMIT 1)
    

    错误是

      

    ERROR 1235(ER_NOT_SUPPORTED_YET)SQLSTATE = 42000 Message =“This   MySQL的版本还不支持'LIMIT& IN / ALL / ANY / SOME   子查询'“

    查看第一个示例,我可以告诉column2更新t1可能会或可能不会更改column1值,例如因为触发器或列是相同的。但是,我想知道为什么MySQL会抛出错误而不是正常评估子查询,或者至少确定在命令运行时是否可能由update更改子查询的结果?至于第二个例子,我真的不明白为什么MySQL不支持这种语法。我认为这些是MySQL错误,我想知道是否有任何时间表将被修复。

0 个答案:

没有答案