2012-02-02 2 views
1

나는 테이블에 다음과 같은 열이 사용자에게 전화가 :오라클 업데이트 같은 글의 행

Name, Location, Active (all varchars). 
John Berlin OK 
Danny London OK 
Robert NY  OK 
John Berlin OK 
Danny Berlin OK 

내가 (2, 3 또는 X 번 이상 나타날 사용자를위한 NOK에 활성 열을 업데이트하고 싶습니다 시간대) - 이름과 위치가 동일합니다 (테이블의 동일한 행).

John Berlin NOK 
    Danny London OK 
    Robert NY  OK 
    John Berlin NOK 
    Danny Berlin OK 

어떻게하면됩니까? 감사합니다.

답변

2

오라클에서는 다음을 사용할 수 있습니다.

UPDATE your_table 
    SET active = 'NOK' 
WHERE (name, location) IN (SELECT name, location 
           FROM your_table 
          GROUP BY name, location 
          HAVING COUNT(*) > 1) 
0

당신은 이런 식으로 작업을 수행해야합니다 : 업데이트를 확인 #temp 테이블

select t.Name, t.Location 
into #test 
from tablename t 
group by t.Name, t.Location 
having count(t.Name) > 1 

삽입 중복 값을

update tablename 
set Active = 'NOK' 
from tablename t 
inner join #test t2 on t.Name = t2.Name and t.Location = t2.Location 

또는 한 번에 :

update tablename 
set Active = 'NOK' 
from tablename t 
inner join (select t.Name, t.Location 
      from tablename t 
      group by t.Name, t.Location 
      having count(t.Name) > 1) t2 on t.Name = t2.Name and t.Location = t2.Location