Background Image

FORUM

조회 수 26065 추천 수 0 댓글 4
?

단축키

Prev이전 문서

Next다음 문서

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

* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS
Window7 32bit, Linux 64bit 등
CUBRID Ver.
[cubrid_rel] 수행 결과
CUBRID TOOL Ver.
[도움말]-[버전정보] 확인
응용 환경(API)
java, php, odbc 등 입력

* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
안녕하세요. 

문의사항이 있어 글을 남깁니다.


1. 값을 select 해 와서 그 내용을 update 시킬려고 하는데, 검색 조건에 따라서 안 될 수가 있나요?

2. select 한 값을 치환할 수 있나요? 


1. 값을 select 해 와서 그 내용을 update 시킬려고 하는데, 검색 조건에 따라서 안 될 수가 있나요?


아래는 제가 사용하는 쿼리입니다.

------------------------------------------------------------------------------------------------------

UPDATE gk_printuser B SET 

B.div_cd = (SELECT A.before_cd FROM gk_printuser A WHERE LENGTH(A.before_cd_updt) = '10')

WHERE B.print_idx < 50

------------------------------------------------------------------------------------------------------


같은 테이블에서 일어나는 액션이고, 

before_cd_updt 컬럼의 데이터의 자리수가 10자리일때 div_cd 컬럼에 값을 넣을려고 합니다.

일반 검색조건(함수를 사용하지 않은 구문)으로 했을땐 쿼리가 실행 되었는데 위 구문으로 했을때 쿼리가 실행이 안되네요.


---------------------------------------------------

오류 : 실행 오류 : -459

Query result contains more than a single tuple. 

---------------------------------------------------


2. 값을 치환할 수 있나요? 

1번 내용에서 셀렉트 낸 내용들을 'C'라는 값으로 넣고 싶습니다.

검색 결과 TRANSLATE 라는 함수를 쓰면 된다고 하는데 아래 쿼리로 사용하는게 맞나요?


------------------------------------------------------------------------------------------------------

UPDATE gk_printuser B SET 

B.div_cd = TRANSLATE((SELECT A.before_cd FROM gk_printuser A WHERE LENGTH(A.before_cd_updt) = '10'), A.before_cd, 'C')

WHERE B.print_idx < 50

------------------------------------------------------------------------------------------------------


이렇게 사용하는게 아니라면 잘못된 부분이나, 다른 함수를 알려주시면 감사하겠습니다.

빠른답변 기다리겠습니다.
감사합니다.!

  • ?
    이용미 2013.11.29 23:43

    안녕하세요.

    몇가지 질문이 있으니 확인 부탁 드립니다.

    1. 특정 값을 Select 하여, Select 된 데이터의 특정 컬럼을 변경하고 싶다는 말씀이신지요?

        발생 한 오류는 [SELECT A.before_cd FROM gk_printuser A WHERE LENGTH(A.before_cd_updt) = '10'] 질의의 결과가 두 건 이상의 결과로 출력되어 발생한 문제입니다.

    2. 해당 질의도 1번 처럼 [SELECT A.before_cd FROM gk_printuser A WHERE LENGTH(A.before_cd_updt) = '10'] 질의의 결과가 두 건 이상의 결과가 출력되어, 동일 오류가 발생할 것입니다.

     

    질의를 다시 한번 확인해 주시고, 원하시는 결과를 알려주시면 도움이 될 것 같습니다.

    감사합니다.

  • ?
    신나여 2013.12.03 20:49

    추가 질문 하나 해도 될까요? 

     UPDATE  gk_close B  SET

      B.cl_cd  = (  SELECT A.cl_cd  FROM gk_printuser A WHERE A.idx = B.idx )

    이렇게 쿼리를 진행했을때 어떤건 update가 되고 어떤건 되지 않았는데 왜그런가요?

    두 테이블 모두 idx는 PK이고, cl_cd는 not null입니다.


    update안되어 있는 데이터를  gk_printuser 테이블에 확인차 idx로 select해서 값을 확인했는데도 cl_cd값이 있는데도 update가 안되네요.

    그래서 idx값을 지정해서 아래쿼리와 같이 실행하였습니다.

     UPDATE  gk_close B  SET

      B.cl_cd  = (  SELECT A.cl_cd  FROM gk_printuser A WHERE A.idx = '3' )

    where B.idx = '3'

    이렇게 값을 직접 지정해 주었는데도 update가 안돼요.

    또 update가 된 데이터는 저렇게 직접 지정해주면 update가 돼구요..


    환장하겠네요-,-

    gk_printuser  idx 타입 : 넘버릭15, cl_cd 타입 : 바차 : 6

    gk_close idx 타입 : 넘버릭15, cl_cd 타입 : 캐릭터: 6


    답변 기다립니다.!

    감사합니다.



  • ?
    이용미 2013.12.04 00:06

    안녕하세요.


    1. UPDATE  gk_close B  SET B.cl_cd  = (  SELECT A.cl_cd  FROM gk_printuser A WHERE A.idx = B.idx )

     - gk_close, gk_printuser 테이블의 idx가 모두 1:1로 매칭 된다면 gk_close 테이블의 cl_cd 값은 모두 gk_printuser 테이블의 cl_cd 값으로 변경될 것입니다. 그러나 gk_close테이블의 idx 값 중에 gk_printuser 테이블의 idx 컬럼에 없는 값이 존재한다면, not null 조건이 있는 환경에서는 오류가 발생할 것이고요, null을 허용하는 환경에서는 매칭되지 않는 데이터는 NULL 값으로 변경이 될 것 입니다.

     - update 문 자체에는 where 조건절이 없기 때문에, 특정 값만 변경되지는 않을 것 입니다.


    2. UPDATE  gk_close B  SET B.cl_cd  = (SELECT A.cl_cd  FROM gk_printuser A WHERE A.idx = '3') where B.idx = '3'

     - gk_close, gk_printuser 테이블의 idx 값은 모두 numeric(숫자 데이터 타입)이므로, 아래와 같이 변경하여 사용하셔야 합니다.

     - UPDATE  gk_close B  SET B.cl_cd  = (SELECT A.cl_cd  FROM gk_printuser A WHERE A.idx = 3) where B.idx = 3


    확인해 보시고, 추가 문의 사항이 있으시면 댓글 주세요.

    감사합니다.

  • ?
    신나여 2013.12.03 20:39

    앗, 기본적인 사항을 확인못했네요.

    감사합니다! 잘 해결되었습니다~~


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 49
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
3914 큐브리드 복구 관련 질문 있습니다. 2 secret 노멤버 2016.12.09 9
3913 다시 문의드립니다. 1 secret centosm 2016.01.12 9
3912 서버 IP 변경후 브로커 작동 불능 5 secret 닉네임 없어유 2017.07.26 9
3911 CUBRID 보안 설정 가이드 문의드립니다. 1 secret haenam12 2017.03.22 9
3910 Cubrid 9.3 버전 문의 3 secret 일산 2016.03.07 9
3909 윈도우7일때 로컬엔진으로 접속하면 에러납니다. 1 secret 어려운큐브 2014.07.17 9
3908 큐브리드 연동 중 Unable to get shard id. No hint available. 에러가 발생합니다. 3 secret 호잉호잉호 2016.02.06 9
3907 broker status 결과에 질문 다시드립니다... 1 secret 오니오니 2014.08.28 9
3906 Linux상의 export한 cubrid dump파일 문의 1 secret 검풍전기 2012.11.30 9
3905 Failed to connect to database server, 'projectname' , on the following host(s): localhost secret 럭키캡틴 2013.04.07 9
3904 매니저 관련 문의 드립니다. 1 secret 장경수 2012.06.14 10
3903 쉘스크립트파일이 cron으로는 실행이 되지않습니다. 2 secret 어려운큐브 2011.10.05 10
3902 like 검색관련 1 secret 박성규 2011.02.16 10
3901 다운로드관련 1 secret 최승도 2010.08.25 10
3900 도전에 대한 질문? 1 secret 로밍엑스 2010.04.24 10
3899 라이센스문의 1 secret 쿠로 2010.04.16 10
3898 오류 관련 문의 드립니다. 1 secret 아코 2015.05.27 10
3897 CUBRID와 관련된 프로세스 관련 문의드립니다. 1 secret 질의응답요청 2015.03.28 10
3896 오라클에서 제공하는 DB 링크 1 secret 아코 2015.06.04 10
3895 큐브리드 이중화 관련 질문 3 secret 차차오 2015.03.02 10
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 200 Next
/ 200

Contact Cubrid

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