Background Image

FORUM

조회 수 26067 추천 수 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 70
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4465
2179 데이터 이전이 불가합니다. 1 SoMa 2011.02.24 7784
2178 CUBRID 프로시저 한글 문제 2 테르 2014.09.25 7779
2177 빈문자열을 오라클 처럼 NULL로 사용하고싶은데요 1 file 곰팅팅이 2015.11.17 7773
2176 다량으로 생성된 임시볼륨 제거 방법 문의 1 file freemir 2013.08.29 7765
2175 Table primary key잡는 중 중단 시키고, 서버 재시작하니 에러나고 시작이 안되네요. 1 미스터투 2011.06.28 7762
2174 큐브리드 3.1로 업그레이드가 되지 않습니다. 10 종이 2011.02.23 7759
2173 autoset 631 에서 창에서 큐브리드 매니저 실행시 다음과같은 에러창이 뜸 file 아프리카 2014.02.03 7756
2172 호스트 연결이 안됩니다. 3 file 미드소나 2013.01.01 7752
2171 UTF8지원 관련.. 2 스마트 2010.12.21 7750
2170 csql 로 스크립트 실행 문의 1 joke7 2015.12.02 7747
2169 esql 컴파일시 에러관련 재문의 1 프리스 2010.12.14 7746
2168 AIX에 CUBRID 설치 후 오류사항 문의 1 최명호 2015.06.02 7735
2167 Invalid buffer position! insert시 발생하는데 왜 발생하나요? 5 바람바람 2013.01.18 7732
2166 ACXEL_Installer를 이용할려는데 1 SoMa 2010.12.20 7716
2165 인서트 시 IX_LOCK 문의 1 joke7 2016.03.14 7715
2164 CUBRID 서비스가 종종 내려가거나 접근이 되지 않습니다. 4 file 노스 2010.11.09 7713
2163 아래 918번 글에 대한 답변은 언제쯤...?? 1 유니콘 2011.02.21 7712
2162 loaddb 사용시... 2 쩌비 2012.11.22 7707
2161 8.4.3 32bit의 데이터를 9.1 64bit로 마이그레이션을 하려고 합니다만.. 1 살구맛 2013.04.26 7698
2160 1대의 서버에 다른 버젼의 큐브리드 추가 설치..실행시 에러에 대해 문의드립니다. 1 S1000RR 2014.08.08 7696
Board Pagination Prev 1 ... 87 88 89 90 91 92 93 94 95 96 ... 200 Next
/ 200

Contact Cubrid

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