博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL语句修改多条记录某一字段的值
阅读量:6956 次
发布时间:2019-06-27

本文共 1813 字,大约阅读时间需要 6 分钟。

hot3.png

项目由于订单表做了冗余处理,存储了roomtypeid,但由于项目修改时及维护等原因,导致roomtypeid(临时视图roomtypeid1)没有及时更新,出现冗余信息未得到更新,通过相关联的priceid获取正确的roomtypeid(临时视图roomtype2),通过livi_order表的orderid找到对应记录,将roomtypeid值修改成查询到的临时视图roomtype2的值。以下是执行语句

UPDATE livi_order _order

    SET _order.roomtypeid = 
        (SELECT B.roomtypeid2
            FROM 
            (select *
                FROM 
                (SELECT _order.orderid, _order. roomtypeid                                 roomtypeid1,roomtype.roomtypeid roomtypeid2 
                    FROM livi_order _order, livi_price price, livi_roomtype roomtype
                    WHERE _order.priceid = price.priceid and price.roomtypeid = roomtype.roomtypeid
                ) temp
                where temp.roomtypeid1 != temp.roomtypeid2
            ) B
            WHERE B.orderid = _order.orderid
       )
 WHERE _order.orderid = 
    (SELECT E.orderid 
        FROM 
        (select *
            FROM
            (SELECT _order.orderid,_order.roomtypeid roomtypeid1, roomtype.roomtypeid roomtypeid2 
                FROM livi_order _order, livi_price price, livi_roomtype roomtype
                WHERE _order.priceid = price.priceid and price.roomtypeid = roomtype.roomtypeid
            ) temp
            where temp.roomtypeid1 != temp.roomtypeid2
        ) E 
        WHERE E.orderid = _order.orderid
    )

 

多字段修改

UPDATE livi_order D

  LEFT JOIN (select *
                FROM 
                (SELECT _order.orderid,_order.roomtypeid roomtypeid1, roomtype.roomtypeid roomtypeid2 
                    FROM livi_order _order, livi_price price, livi_roomtype roomtype
                    WHERE _order.priceid = price.priceid and price.roomtypeid = roomtype.roomtypeid
                ) temp
                WHERE temp.roomtypeid1 != temp.roomtypeid2) C
    ON (C.orderid = D.orderid)
   SET D.roomtypeid = C.roomtypeid2 
WHERE D.orderid = 
    (SELECT E.orderid 
        FROM
        (select *
            FROM
            (SELECT _order.orderid,_order.roomtypeid roomtypeid1, roomtype.roomtypeid roomtypeid2 
                FROM livi_order _order, livi_price price, livi_roomtype roomtype
                WHERE _order.priceid = price.priceid and price.roomtypeid = roomtype.roomtypeid
            ) temp
            WHERE temp.roomtypeid1 != temp.roomtypeid2
        ) E 
        WHERE E.orderid = D.orderid
    )

转载于:https://my.oschina.net/u/2845848/blog/746643

你可能感兴趣的文章
洛谷 P2661 信息传递 Label:并查集||强联通分量
查看>>
Linux下搭建ftp服务器(转载)
查看>>
hadoop之 HDFS-Hadoop存档
查看>>
搭建时间服务器
查看>>
php 多进程 父进程的阻塞与非阻塞
查看>>
asp.net core mvc ActionFilterAttribute 获取自动定义Attribute
查看>>
sealed、new、virtual、abstract与override 趣解
查看>>
[bzoj 4650][NOI 2016]优秀的拆分
查看>>
crossplatform---Nodejs in Visual Studio Code 08.IIS
查看>>
OGNL表达式入门
查看>>
Java 诊断工具 Arthas 教程学习笔记
查看>>
bootstrap 2.3版与3.0版的使用区别
查看>>
高并发之 - 全局有序唯一id Snowflake 应用实战
查看>>
菜鸟学习笔记1
查看>>
office2003 安装步骤及注意事项
查看>>
手机抓包图文教程 【转载】
查看>>
fprintf、fflush(stdout)、printf、sprintf与fprintf 的用法区分
查看>>
EPANET头文件解读系列3——TOOLKIT.H
查看>>
深入单例模式(理解理解)
查看>>
凸问题、分类器
查看>>