표 1:
id name desc
-----------------------
1 a abc
2 b def
3 c adf
표 2:
id name desc
-----------------------
1 x 123
2 y 345
, Sql 업데이트하십시오 어떻게 실행합니까 oracle SQL 에 한 표 1 표 2& # 39 의 쿼리하지 업데이트할 수 있는 '이름' 와 '설명' 와 같은 'id'? 그래서 꼭 이래야겠어요 최종 결과를 얻을 수 있다.
표 1:
id name desc
-----------------------
1 x 123
2 y 345
3 c adf
하지만 문제는 수행됨을 (https://stackoverflow.com/questions/5036918/sql-update-query-with-data-from-another-table) 에서 특별히 oracle sql.
이를 상관식 업데이트
UPDATE table1 t1
SET (name, desc) = (SELECT t2.name, t2.desc
FROM table2 t2
WHERE t1.id = t2.id)
WHERE EXISTS (
SELECT 1
FROM table2 t2
WHERE t1.id = t2.id )
이 결과 주요 아니했으니 참가하십시오 것으로 볼 수도 있습니다
UPDATE (SELECT t1.id,
t1.name name1,
t1.desc desc1,
t2.name name2,
t2.desc desc2
FROM table1 t1,
table2 t2
WHERE t1.id = t2.id)
SET name1 = name2,
desc1 = desc2
update fp_active set STATE='E',
LAST_DATE_MAJ = sysdate where (client,code) in (select (client,code) from fp_detail
where valid = 1) ...
전체 비유하사 있습니다. http://forums.devshed.com/oracle-development-96/how-to-update-from-two-tables-195893.html
미국산 쇠고기 처럼 사용할 수 있는 키를 갖고 있는 열 보기할 in& # 39, & # 39 를 괄호 안에 전에, where 절 select 문은 열 이름을 갖고 있는 같은 괄호 안에. 여기서 ( column1, column2) 에서 ( 일부 ( column1, column2) 를 테이블로 ", 내가 want" 설정, );
Update table set column = (select...)
이후 1 세트만 협력했습니다 가져다줄래요 결코 값 - SQL 오류가 있을 것으로 기대하고 있다. Ora 01427: 두 개 이상의 행을 서브케리 되돌려줍니다 단일 행.
BEGIN
For i in (select id, name, desc from table1)
LOOP
Update table2 set name = i.name, desc = i.desc where id = i.id;
END LOOP;
END;
S # 39 에서 실행할 때, 얼마나 정확하게 that& 자크 두벨퍼 워크시트를. 그들은 말하도다 it& # 39 의 느리지만 that& # 39 의 가져다줄래요 협력했습니다 유일한 솔루션으로 이번 사건에 대한.
또한, 내 관련 문제가 수정되었습니다 단 열 중 일부는 이 열 수 없었고, 그래서 내가 하고 싶은 그 편집, 많은 행뿐만 남겨두십시오 내려졌단 - 기본적으로 열 서브셋 리스토어하며 백업하도록 에서 전체 테이블. 그냥 스케쳐내 리스토어할 건너뛰십시오 모든 행, where 절.
물론 이 길을 따라 선택할 수 있지만, 내 경우에는 기재하십시오 삭제하시겠습니까 간단해진다는 약간만이라도 내가 필요한 솔루션 부트해 업데이트뿐.
Select * from a 페어당 재주 있는 작업을 할 때 한 예: _1) 라는 이름을 가진 테이블의 복제본임을, 제 2 열 받게 된다. 그래서 here& # 39, s what I came up with:
update (
select * from t1 join t2 on t2.id = t1.id
where id in (
select id from (
select id, col1, col2, ... from t2
minus select id, col1, col2, ... from t1
)
)
) set col1=col1_1, col2=col2_1, ...
BEGIN
For i in (select id, name, desc from table2)
LOOP
Update table1 set name = i.name, desc = i.desc where id = i.id and (name is null or desc is null);
END LOOP;
END;