美文网首页
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