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

相關文章
相關標籤/搜索