您的位置:首页 > 数据库 > Oracle

oracle数据库批量更新某个字段的值where条件是个集合

2018-03-27 09:22 176 查看
问题描述:
需要根据人员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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: