1. 程式人生 > >oracle資料庫批量更新某個欄位的值where條件是個集合

oracle資料庫批量更新某個欄位的值where條件是個集合

問題描述:

需要根據人員ID批量更新滿足條件的欄位資訊

一、查詢滿足條件的資料資訊數量

/**
左關聯
查詢入庫上架後沒有清除
調往單位未清空的資訊數量
*/
SELECT count(*)  FROM RECORD r 
left JOIN PERSON p ON r.PERSON_ID=p.PERSON_ID 
where 1=1 AND  p.MOVE_CORP is NOT NULL AND r.RECORD_PLACE is not null 
and r.RECORD_STATE = 1 

二、查詢滿足條件資料資訊


/**
左關聯
查詢入庫上架後沒有清除
調往單位未清空的資訊
*/
SELECT r.* ,p.NAME ,p.IDCARD ,p.move_corp  FROM RECORD r 
left JOIN PERSON p ON r.PERSON_ID=p.PERSON_ID 
where 1=1 AND  p.MOVE_CORP is NOT NULL AND r.RECORD_PLACE is not null 
and r.RECORD_STATE = 1 

三 、查詢相應清理的資料ID

/**
左關聯
查詢入庫上架後沒有清除
調往單位未清空的資訊的人員ID
*/
SELECT p.PERSON_ID FROM RECORD r 
left JOIN PERSON p ON r.PERSON_ID=p.PERSON_ID 
where 1=1 AND  p.MOVE_CORP is NOT NULL AND r.RECORD_PLACE is not null 
and r.RECORD_STATE = 1 

四 、更新特定欄位
/**
根據查詢出來的人員ID
更新相應欄位的值
用IN
*/
UPDATE PERSON set MOVE_CORP=NULL  WHERE PERSON_ID  IN(SELECT p.PERSON_ID FROM RECORD r 
left JOIN PERSON p ON r.PERSON_ID=p.PERSON_ID 
where 1=1 AND  p.MOVE_CORP is NOT NULL AND r.RECORD_PLACE is not null 
and r.RECORD_STATE = 1 )
/**
根據查詢出來的人員ID
查詢相應人員資訊
*/
select *  from PERSON WHERE PERSON_ID
IN(SELECT p.PERSON_ID FROM RECORD r 
left JOIN PERSON p ON r.PERSON_ID=p.PERSON_ID 
where 1=1 AND  p.MOVE_CORP is NOT NULL AND r.RECORD_PLACE is not null 
and r.RECORD_STATE = 1 )


/**
查詢特定人員資訊
*/
select *  from PERSON WHERE PERSON_ID =60252