项目因为订单表作了冗余处理,存储了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