oracle資料庫批量更新某個欄位的值where條件是個集合
阿新 • • 發佈:2019-02-05
問題描述:
需要根據人員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