美文网首页
mysql 中将表中某一字段值查询出来,更新到另一个字段上的SQ

mysql 中将表中某一字段值查询出来,更新到另一个字段上的SQ

作者: 三招六式一把铁斧 | 来源:发表于2018-02-22 14:12 被阅读0次

    场景:想要将receiveTime的值赋给create_time,此时涉及到同表“自更新”的操作

    image.png
    1. 错误示例
    update order_info set create_time = (select receiveTime from order_info where flowId = 1) where flowId = 1;
    

    这种写法会报一个错误:You can't specify target table for update in FROM clause
    含义:不能在同一表中查询的数据作为同一表的更新数据。

    1. 解决的方法
      借助一个虚拟的中间表,将receiveTime赋值给create_time
    UPDATE order_flow SET create_time =
        (SELECT b.receiveTime FROM 
              ( SELECT a.receiveTime FROM order_flow a WHERE a.flowId = 1) -- 此处相当于一个虚拟的表,简称b
    b) 
    WHERE flowId = 1;
    

    利用嵌套两层select语句的方式实现了将receiveTime的值赋给create_time,此时涉及到同表“自更新”的操作

    相关文章

      网友评论

          本文标题:mysql 中将表中某一字段值查询出来,更新到另一个字段上的SQ

          本文链接:https://www.haomeiwen.com/subject/xyxztftx.html