dtdfl62844 2014-12-03 18:52
浏览 42
已采纳

带有选择数据的MySQL更新表

Now, I'm trying to get the highest value from a column in a table then increment it(+1), then update another records same column to that number. I'm scripting in PHP, variable $SQL is sent to MySQL.

    $SQL="
        UPDATE `router`
        SET `Line Order`= (SELECT 1 + IFNULL(MAX(`Line Order`), 0) FROM `router`)
        WHERE `RN`=?
    ";
    $stmt = $GLOBALS['mySQLConnection']->prepare($SQL);
    echo $GLOBALS['mySQLConnection']->error;

The error is: You can't specify target table 'router' for update in FROM clause How are we suppose to do this, without writing separate queries in php

  • 写回答

1条回答 默认 最新

  • dqdjfb2325 2014-12-03 19:02
    关注

    Try this query:

    UPDATE router AS r1
    INNER JOIN (
        SELECT 1 + IFNULL(MAX(`Line Order`), 0) AS new FROM `router`) AS r2
    SET `Line Order` = r2.new
    WHERE `RN` = ?
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集