database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
ㆍDB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
DB2 Q&A 1067 게시물 읽기
No. 1067
JOIN 결과 UPDATE ??
작성자
작성일
2006-07-28 11:01
조회수
9,322

TABLE1

 

컬럼1 컬럼2
A 100
B 200


 

TABLE2

 

컬럼1 컬럼2
A
B
C


 

TABLE1 의 컬럼2 내용을 TABLE2 의 컬럼2 에 UPDATE 하고 싶습니다.

 

TABLE2 결과

 

컬럼1 컬럼2
A 100
B 200
C


 

SELECT 해서 하나씩 UPDATE 하는것 말고

 

위 두 테이블을 조인해서 UPDATE 하는게 있다는 이야기를 들었는데요...

 

TABLE1 과 TABLE2 를 JOIN 해서 결과를 TABLE1 에 UPDATE 한번에 하는 쿼리가 되나요?

 

고수님들 답변 부탁드립니다. (__)

이 글에 대한 댓글이 총 2건 있습니다.

create table t1(c1 char(5),c2 integer);
create table t2(c1 char(5),c2 integer);

 

insert into t1 values('A',100),('B',200);
insert into t2(c1) values('A'),('B'),('C');

 

select * from t1;

C1    C2        
----- -----------
A             100
B             200


select * from t2;

C1    C2        
----- -----------
A               -
B               -
C               -

 

update t2 set c2=(select c2 from t1 where t1.c1=t2.c1);

select * from t2;

C1    C2        
----- -----------
A             100
B             200
C               -

 

insert into t1 values('A',200);

update t2 set c2=(select c2 from t1 where t1.c1=t2.c1);

DB21034E  명령이 유효한 명령행 처리기 명령이 아니므로 SQL문으로 처리되었습니다.
SQL 처리 중에 이 명령은 다음을 리턴했습니다.
SQL0811N  스칼라 fullselect, SELECT INTO문 또는 VALUES INTO문의 결과가 두 행
이상입니다.  SQLSTATE=21000

 

update t2 set c2=(select max(c2) from t1 where t1.c1=t2.c1);

select * from t2;

C1    C2        
----- -----------
A             200
B             200
C               -

 

update t2 set c2=50 where c1 = 'C';

select * from t2;

C1    C2        
----- -----------
A             200
B             200
C              50

update t2 set c2=(select max(c2) from t1 where t1.c1=t2.c1);

select * from t2;

C1    C2        
----- -----------
A             200
B             200
C               -

 

update t2 set c2=50 where c1 = 'C'

update t2 set c2=(select max(c2) from t1 where t1.c1=t2.c1) where t2.c1 in (select t1.c1 from t1)

select * from t2;

C1    C2        
----- -----------
A             200
B             200
C              50

 

도님이 2006-07-28 12:43에 작성한 댓글입니다.
이 댓글은 2006-07-28 13:56에 마지막으로 수정되었습니다. Edit

도님 감사합니다...  ^^*

흑님이 2006-07-28 13:41에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1070insert, update시에 로그 안남게 하는 방법? [1]
이문선
2006-07-31
8353
1069[질문] 프로시저를 삭제하려고 해도 삭제가 안됩니다. [2]
이준식
2006-07-31
7839
1068[질문] 스토어드 프로시져 실행방법이 궁금합니다. [2]
이준식
2006-07-29
8393
1067JOIN 결과 UPDATE ?? [2]
2006-07-28
9322
10661:N 구조에서 보통 그룹화 SELECT는 어떻게 하시나요... [5]
난감해요
2006-07-27
7565
1065IBM db2 에 관해 몇가지 궁금한점이 있습니다. ^^? [1]
김경원
2006-07-26
7761
1064오라클의 TO_NUMBER함수를 대신할 수 있는 DB2 함수는?? [1]
노는사람
2006-07-26
8278
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다