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 51
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
2274 데이터 이전이 불가합니다. 1 SoMa 2011.02.24 7784
2273 데이터 이관시 소유자 변경 가능한가요??? 1 델몬트 2013.08.08 60067
2272 데이터 이관 문의입니다. 1 kipo0821 2023.05.30 129
2271 데이터 이관 문의 1 secret 데롱데롱 2016.11.04 16
2270 데이터 업로드관련 문의 1 madamryu 2018.06.12 218
2269 데이터 업로드 관련 문의입니다. 2 왕왕초보왕왕 2020.11.25 96
2268 데이터 삽입 쿼리 1 지삭낭언 2010.06.15 8751
2267 데이터 삭제 후 인써써트시 한번은 정상 동작 두번째에서 아래의 오류가 발생합니다 1 htoh 2021.04.06 209
2266 데이터 볼륨을 추가 하는 명령어 확인 부탁 드립니다. 7 Philip Park 2020.12.29 246
2265 데이터 볼륨 정리 1 청백-e 2016.01.22 6817
2264 데이터 볼륨 자동 추가 로그 생성 안됨 3 종이 2012.12.27 7675
2263 데이터 복구시 질문사항입니다. 1 ........ 2011.04.21 13059
2262 데이터 복구 1 file 연습만이살길 2022.03.25 263
2261 데이터 보안기능 문의 1 secret hareton 2009.07.01 8
2260 데이터 베이스 생성이 되지 않습니다.. 1 삼돌이 2011.10.05 8042
2259 데이터 베이스 버전 업 방법..? 1 오명일 2015.08.11 5622
2258 데이터 베이스 load 명령어 실행 중 Maximum value 오류 1 pqow770 2019.08.06 248
2257 데이터 백업/복구 와 언로드/로드 의 차이?? 1 유니콘 2011.01.12 13326
2256 데이터 백업. 1 나아가나가 2014.04.30 6802
2255 데이터 백업, 복구는 잘 되는데 언로드, 로드가 안됩니다. 10 secret 종이 2011.01.13 21
Board Pagination Prev 1 ... 82 83 84 85 86 87 88 89 90 91 ... 200 Next
/ 200

Contact Cubrid

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