[SQL] 다른 테이블의 데이터를 하나 개의 테이블에서 업데이트 된 행이 각각 동일하고 하나의 열에 기초
SQL다른 테이블의 데이터를 하나 개의 테이블에서 업데이트 된 행이 각각 동일하고 하나의 열에 기초
각각이 동일 (USER_ID)에서 한 열을 기반으로 다른 테이블에서 하나 개의 테이블에 다수의 행을 업데이트.
두 테이블은 USER_ID 컬럼을 가지고있다. USER_ID 열이 동일한 경우 필요가 T1에서 T2로 데이터를 삽입한다.
제공되는 사전에 어떤 도움을 주셔서 감사합니다.
해결법
-
==============================
1.
update table1 t1 set ( t1.column1, t1.column2 ) = ( select t2.column1, t2.column2 from table2 t2 where t2.column1 = t1.column1 ) where exists ( select null from table2 t2 where t2.column1 = t1.column1 );
또는이 (하나 그 사람에게 많다 t1.column1 경우 t2.column1이는 <=> 좋다)
update table1 t1 set ( t1.column1, t1.column2 ) = ( select t2.column1, t2.column2 from table2 t2 where t2.column1 = t1.column1 and rownum = 1 ) where exists ( select null from table2 t2 where t2.column1 = t1.column1 );
-
==============================
2.당신은 T2의 데이터로 T1에 일치하는 행을 업데이트하려면 :
당신은 T2의 데이터로 T1에 일치하는 행을 업데이트하려면 :
update t1 set (c1, c2, c3) = (select c1, c2, c3 from t2 where t2.user_id = t1.user_id) where exists (select * from t2 where t2.user_id = t1.user_id)
은 "존재하는"부분이 일치하는 항목이 없을 null로 T1 열을 업데이트하는 것을 방지합니다.
-
==============================
3.
merge into t2 t2 using (select * from t1) t1 on (t2.user_id = t1.user_id) when matched then update set t2.c1 = t1.c1 , t2.c2 = t1.c2
-
==============================
4.중복 USER_ID의를 만드는 행복하지 않으면 레코드가 이미합니다 (USER_ID 경기) T1에있는 경우는 삽입하지 않습니다.
중복 USER_ID의를 만드는 행복하지 않으면 레코드가 이미합니다 (USER_ID 경기) T1에있는 경우는 삽입하지 않습니다.
당신은 업데이 트를 할 수 있습니다?
UPDATE t1 SET <t1.col_list> = (SELECT <t2.col_list> FROM t2 WHERE t2.user_id = t1.user_id) WHERE EXISTS (SELECT 1 FROM t2 WHERE t1.user_id = t2.user_id);
희망이 도움이 ...
-
==============================
5.당신은 항상 사용하고 "일치하지 않는 부분"을 생략 할 수
당신은 항상 사용하고 "일치하지 않는 부분"을 생략 할 수
merge into table1 FromTable using table2 ToTable on ( FromTable.field1 = ToTable.field1 and FromTable.field2 =ToTable.field2) when Matched then update set ToTable.fieldr = FromTable.fieldx, ToTable.fields = FromTable.fieldy, ToTable.fieldt = FromTable.fieldz) when not matched then insert (ToTable.field1, ToTable.field2, ToTable.fieldr, ToTable.fields, ToTable.fieldt) values (FromTable.field1, FromTable.field2, FromTable.fieldx, FromTable.fieldy, FromTable.fieldz);
from https://stackoverflow.com/questions/7918688/update-rows-in-one-table-with-data-from-another-table-based-on-one-column-in-eac by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 오라클에 삽입하여 생성 된 시퀀스 ID를 입수 (0) | 2020.06.03 |
---|---|
[SQL] 어떻게 NULL 값은 데이터베이스 검색의 성능에 영향을합니까? (0) | 2020.06.03 |
[SQL] PL / SQL 블록 문제 : 없음 데이터 오류를 발견 (0) | 2020.06.03 |
[SQL] 어떻게 SQL 단지 하나의 필드에 중복없이 레코드를 선택하려면? (0) | 2020.06.03 |
[SQL] ORDER BY 절은 뷰, 인라인 함수, 파생 테이블, 하위 쿼리 및 공통 테이블 표현식에서 유효하지 않습니다 (0) | 2020.06.03 |