基于oracle中的另一个查询进行更新

时间:2017-10-06 16:54:56

标签: sql oracle

我有一个查询,它根据loc_type

标识wid和loc_num
select LOC_NUM, WID, loc_type from a  WHERE ROW_WID IN 
(select DISTINCT PLANT_LOC_WID from b) AND loc_type = 'STORAGE_LOC';

现在表b中的wid正在使用loc_type ='STORAGE_LOC'进行更新,但我需要使用loc_type ='PLANT'更新wid以获取该特定的loc_num

Table A below:-

wid     loc_num    loc_type
884059  038        STORAGE_LOC
881993  038        PLANT

BPLANT_LOC_WID = 884059的所有记录都需要使用PLANT_LOC_WID = 881993更新。

tABLE b BELOW: -

 WID     
884059
884059
884059

需要B更新为

 WID 
 881993 
 881993 
 881993 

2 个答案:

答案 0 :(得分:0)

更新表b 设置PLANT_LOC_WID =(从表格中选择wid,其中loc_type =' PLANT');

答案 1 :(得分:0)

您可以在下方更新您的喜好。你刚刚使查询复杂

UPDATE A   SET A.PLANT_LOC_WID =
(SELECT NVL(B.ROW_WID,0) FROM  b   WHERE a.LOC_NUM = b.LOC_NUM AND b.LOC_TYPE = 'PLANT')
WHERE WID IN  (select DISTINCT PLANT_LOC_WID    from b) AND loc_type ='STORAGE_LOC'