項目因爲訂單表作了冗餘處理,存儲了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