2011-07-31 6 views
2

다른 테이블과 값을 결합하여 테이블을 업데이트하려고합니다. 여기까지 내 검색어가 있습니다. 내가이 프로그램을 실행할 때SQL 다른 테이블과 조인을 기반으로 테이블을 업데이트하십시오.

UPDATE LOGIN SET LOGIN.DISABLED_IND = 'N', LOGIN.DREASON = 'Test' 
     FROM CONTACT 
     WHERE CONTACT.CONTACT_ID = LOGIN.CONTACT_ID 
     AND CONTACT.RID ='abc' 

, 난이

[Error Code: 933, SQL State: 42000] ORA-00933: SQL command not properly ended 

덕분에

답변

2

예를 들어

LOGIN에있는 행의 작은 부분, IN을 사용하는 Yahia의 접근 방식이 더 효율적일 수 있습니다.

UPDATE LOGIN l 
    SET l.DISABLED_IND = 'N', 
     l.DREASON = 'Test' 
WHERE l.contact_id IN (
    SELECT c.contact_id 
     FROM CONTACT c 
    WHERE c.RID ='abc') 
+0

도움과 시간을 많이 보내 주셔서 감사합니다. 정말로 감사드립니다. 귀하의 대답은 훨씬 더 자세하고 자세한 내용이었으며 대용량 데이터 세트를 업데이트 할 때주의해야 할 점이 많았습니다. 그것을 시도하고 당신에게 돌아 가자. 다시 한번 감사드립니다 :). – Nomad

+0

그것은 매력처럼 작동했습니다. 시간 내 주셔서 감사합니다. 마지막으로 초보자 수준에서 전문가 수준으로 마스터하는 데 필요한 리소스 (책, 기사)를 제안 해주십시오. 감사 – Nomad

0

참조하십시오 얻을 correc 티. 이 Wikipedia article에는 선택할 수있는 몇 가지 예가 있습니다. 당신이 LOGIN의 행의 많은 부분을 업데이트하는 기대한다면, 가능성이 상대적으로 업데이트하는 경우가

UPDATE LOGIN l 
    SET l.DISABLED_IND = 'N', 
     l.DREASON = 'Test' 
WHERE EXISTS (
    SELECT 1 
     FROM CONTACT c 
    WHERE c.CONTACT_ID = l.CONTACT_ID 
     AND c.RID ='abc') 

존재 사용하는 것이 더 효율적입니다

UPDATE l 
SET l.DISABLED_IND = 'N', l.DREASON = 'Test' 
FROM LOGIN l 
    JOIN CONTACT c 
    ON c.CONTACT_ID = l.CONTACT_ID AND c.RID ='abc' 
+0

고마워, 나는이 오류가 발생했습니다. [오류 코드 : 933, SQL 상태 : 42000] ORA-00933 : SQL 명령이 제대로 끝나지 않았습니다. – Nomad

+0

도움과 시간을 많이 보내 주셔서 감사합니다. 정말로 감사드립니다. – Nomad

+0

다른 답변이 유용합니까? –