Background Image

FORUM

조회 수 26070 추천 수 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 119
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4476
1000 8.44 버전 지원 여부와 9.대로 업그레이드시 안정 버전 문의드립니다. 1 땡땡이 2017.07.06 268
999 AUTO INCREASE 가 편집이 안됨 2 file 큐브리드어려워요 2022.02.08 268
998 실행계획 읽는 법 문의 드립니다. 1 file kikiki767 2022.07.01 268
997 testdb_t숫자, testdb_x숫자 형식으로 있는 파일 삭제 해도 되나요? 3 coolkkm 2017.11.30 267
996 ERWIN에서 Reverse Engineer 사용중에 에러 발생 3 연습용 2021.09.15 266
995 혼합형 데이터 정렬 방법 1 큐키 2021.06.14 266
994 auto_increment 추가 방법 문의 1 부패방지운영팀 2023.04.14 265
993 큐브리드 마이그레이션툴 사용시 질문입니다. 5 bjosbkjx 2019.01.28 265
992 이중화 씨 락상태가 30분 정도 걸려있다가 재기동 하면 바로 안올라오나요? 3 coolkkm 2017.12.14 264
991 데이터 복구 1 file 연습만이살길 2022.03.25 264
990 버전 문의드립니다 1 ka 2018.10.11 263
989 SELECT 전체 갯수에 대해 질문 드리겠습니다. 1 훈입니다. 2020.04.17 263
988 큐브리드 매니저에서 질의 실행계획 질문하겠습니다. 3 file 연습용 2021.10.01 262
987 파라미터 바인드 문제.. 2 오션나인 2021.06.04 262
986 Locale 확인방법 문의 2 bchlim 2020.07.20 262
985 PHP PDO Driver 설치가 안됩니다. 웨버 2020.08.27 261
984 JOIN (+)과 함수 에러 3 wewek3jk3 2019.07.24 260
983 큐브리드 마이그레이션중 에러 7 밍아 2022.03.03 260
982 아카이브 삭제 명령어 문의 드립니다. 1 Philip Park 2021.04.06 260
981 Redmine 의 데이터베이스로 큐브리드를 사용하는 것이 가능할까요? 3 밝은마음 2018.04.17 260
Board Pagination Prev 1 ... 146 147 148 149 150 151 152 153 154 155 ... 200 Next
/ 200

Contact Cubrid

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