Background Image
조회 수 7411 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

업무상 A 테이블의 특정 row 전체 혹은 다수를 B 테이블로 UPDATE를 수행해야 할 경우 

다수의 서브쿼리를 사용하는 다음과 같은 방법을 생각할 수 있습니다.

UPDATE B SET col1 = (SELECT col1 FROM A WHERE col1 = 1), col2 = (...), col3 = (...), ... WHERE col1 = 1; 


위와 같은 방법은 불필요한 서브쿼리가 많아 SQL이 복잡하게 되므로 다음과 같은 형태로 변경이 가능합니다.

UPDATE B SET (B.col1, B.col2, B.col3, ...) = (SELECT A.col1, A.col2, A.col3, ... FROM A WHERE A.col1 = B.col1) WHERE B.col1 = 1 


예제는 다음과 같습니다.

1. 테이블 생성 및 데이터 INSERT

CREATE TABLE A (col1 INT PRIMARY KEY, col2 CHAR(1), col3 CHAR(1));

CREATE TABLE B (col1 INT PRIMARY KEY, col2 CHAR(1), col3 CHAR(1));


INSERT INTO a VALUES(1, '1', '1');

INSERT INTO a VALUES(2, '2', '2');

INSERT INTO a VALUES(3, '3', '3');

INSERT INTO a VALUES(4, '4', '4');

INSERT INTO a VALUES(5, '5', '5');


INSERT INTO b VALUES(1, 'A', 'A');

INSERT INTO b VALUES(2, 'A', 'A');

INSERT INTO b VALUES(3, 'A', 'A');

INSERT INTO b VALUES(4, 'A', 'A');

INSERT INTO b VALUES(5, 'A', 'A'); 


2. A 와 B 테이블 조회

csql> select * from a;


         col1  col2                  col3                

=========================================================

            1  '1'                   '1'                 

            2  '2'                   '2'                 

            3  '3'                   '3'                 

            4  '4'                   '4'                 

            5  '5'                   '5'                 



csql> select * from b;


         col1  col2                  col3                

=========================================================

            1  'A'                   'A'                 

            2  'A'                   'A'                 

            3  'A'                   'A'                 

            4  'A'                   'A'                 

            5  'A'                   'A'                  


3. B 테이블의 첫 번째 row를 모두 A의 첫 번째 로우로 UPDATE

UPDATE B SET (B.col2, B.col3) = (SELECT A.col2, A.col3 FROM A WHERE A.col1 = B.col1) WHERE B.col1 = 1; 


4. UPDATE 결과 확인

csql> select * from b;


         col1  col2                  col3                

=========================================================

            1  '1'                   '1'                 

            2  'A'                   'A'                 

            3  'A'                   'A'                 

            4  'A'                   'A'                 

            5  'A'                   'A'            



  1. windows 환경에서 압축파일로 CUBRID 설치시 환경변수 쉽게 설정하기

  2. CUBRID dummy data생성-간단편

  3. CUBRID HA에서 사용하는 포트 확인 방법(1523, 59901)

  4. 카디시안(한 Row를 여러 Row) 쿼리문 만들기

  5. 32bit JRE 환경에서 64bit CUBRID Tool 사용

  6. CUBRID Manager 및 엑셀 파일을 이용하여 데이터 입력 시, garbage값이 포함되어 저장되는 경우 해결 방법

  7. SQL튜닝 - 인덱스 활용 사례

  8. JAVA SP 사용 시 로그 처리 방법

  9. 디비와 테이블 문자셋이 다른 경우 처리 방법

  10. A테이블의 다수의 컬럼을 B테이블로 UPDATE 하는 SQL

  11. 전체 레코드 개수 확인하는 SP

  12. MERGE INTO 사용 예제 ( INSERT, UPDATE문을 1개의 쿼리로 실행 )

  13. 워크스페이스 사용중입니다. 다른 워크스페이스를 선택하세요. 대응법

  14. CUBRID Manager 메모리 설정하기(cubridmanager.ini)

  15. CUBRID HA와 Primary key 제약조건

  16. 테이블 사용량 확인방법

  17. cubrid manager server 구동 시 no "events" section in configuration 오류 발생

  18. 9.2 버전에서 복제 재구축(ha_make_slavedb.sh) 스크립트를 사용하려면 수정해야 할 부분

  19. CUBRID vs MySQL vs ORACLE SQL 타입별 비교

  20. 오류데이타검증 - 숫자 이외의 데이타 확인하는 방법

Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 14 Next
/ 14

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales