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
운영게시판
최근게시물
Oracle Q&A 34984 게시물 읽기
No. 34984
update select 에 대한 질문
작성자
장현철
작성일
2008-12-17 15:14
조회수
3,473

테일블  T_A 가

ID      IDX   No ...

abc 123      1...

abc  235     2...

abc  654     3...

abc  662     4...

:

:

테이블 T_B 가

ID     IDX    SA ...

acc  123    20000...

bcc  235    15000...

ccc  654    25000 ...

dcc  662    32000...

 

일 때 T_B 에 있는 아이디를 T_A에 업데이트를 하려고 합니다.

(이 때  IDX는 ID 에 해당하는 INDEX로 고유함)

update  T_A
set T_A.ID= (select T_B.ID
from T_A ,T_B
where T_A.IDX = T_B.IDX ) ;

이렇게 했는데 2개 이상의 행이 리턴 되어 업데이트를 못합니다.

어떻게 해야 하나요?

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

위에 있는 쿼리가 제대로 돌아 간다해도 모든 아이디가 하나로 변경 되어있을겁니다.

두개의 테이블을 가지고 UPDATE 하는 요령은 

1. 해당 조건에 맞는 데이타을 확인한다(SELECT * FROM A,B)

2. 위의 쿼리를 가지고 UPDATE 한다.

   UPDATE 대상테이블 A   ---> A는 ALIAS 입니다.

         SET 변수 = (1번쿼리 대상테이블은 제외 하고 WHERE 문에 대상테이블 ALIAS로 비교)

    WHERE PK모두 적음 = (1번쿼리 대상테이블은 제외 하고 WHERE 문에 대상테이블 ALIAS로 비교)



1. select T_B.ID from T_A ,T_B

    where T_A.IDX = T_B.IDX ----> 최소한 건수는 확인...

2. UPDATE T_A A

         SET T_A.ID = (select T_B.ID from T_B

                               where A.IDX = T_B.IDX)

      WHERE A.IDX =  (select T_B.IDX from T_B

                               where A.IDX = T_B.IDX)



이상입니다.


항상 먼저 UPDATE 문 만들지 마시구요...SELECT 부터 요것만 되면 다된거니까 ^^

수영님이 2008-12-17 16:09에 작성한 댓글입니다. Edit

UPDATE   /* +  bypass_ujvc  */

  (

    SELECT

          t_a.id  a_id

         ,t_b.id  b_id

      FROM t_a , t_b

     WHERE t_a.idx = t_b.idx

) SET  a_id = b_id;

Marillion님이 2008-12-18 11:56에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
34989파티션이 나눠져 있는 테이블에 데이터를 insert 시에 이 데이터가 어느 파티션에 들어가 있는지 확인 할 수 있는 쿼리나 방법 있습니까? [2]
행동하자
2008-12-18
2678
34988DB LINK 재생성 후 문제
박상수
2008-12-18
2869
34985쿼리 도움좀 주세요~ [2]
초보
2008-12-17
2871
34984update select 에 대한 질문 [2]
장현철
2008-12-17
3473
34983백업과 복구시 archive 관련 질문드립니다., [4]
윤철민
2008-12-17
13018
34981백업 정책을 만들고 있는데 궁금한 점이 생겼습니다!!
2008-12-17
2290
34980LONG 타입 데이타 등록시 에러
오라클
2008-12-16
2585
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다