MySQL中用于根据另一个字段的最大值更新字段的嵌套select语句会产生错误

时间:2013-12-26 17:45:18

标签: php mysql nested max

我想在PhP中执行以下SQL语句。我在下面简化了它。我想知道MySQL修改使其工作。我尝试了一些像给表中的别名,但它不起作用:

     update T1 set col1 = 500 
         where  col2 = 12345 and 
                col3 = (select max(col3) from T1 where  col2 = 12345) 

我想更新一列具有最大值的记录。整个查询中只涉及一个表。我正在使用PDO,如果这是相关的。

给出的错误是:

#1093 - You can't specify target table 'T1' for update in FROM clause 

1 个答案:

答案 0 :(得分:1)

改为使用join

 update T1 join
        (select max(col3) as maxcol3
         from T1 t11
         where col2 = 12345
        ) tmax
        on T1.col3 = tmax.maxcol3 and
           T1.col2 = 12345
     set T1.col1 = 500;