SQL语句修改多条记录某一字段的值

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

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
    )vi

相关文章
相关标签/搜索