Background Image

FORUM

조회 수 106 추천 수 0 댓글 6
?

단축키

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 디렉토리 압축


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

 

수고 많으십니다.

 

MERGE INTO test_tbl A USING  db_root  

ON   A.code = 'DAL'                 

WHEN MATCHED THEN           --->  WHEN MATCHED and A.name='홍길동' THEN   // and 조건 추가는 안되는지

         UPDATE    SET A.name = 'Dal Na La La', A.continent='Space Space', A.capital = ''

 

WHEN NOT MATCHED THEN   --->  WHEN NOT MATCHED and A.name='홍길동' THEN   // and 조건 추가는 안되는지

          INSERT (A.code, A.name, A.continent, A.capital) VALUES ('DAL', 'Dal Na La', 'Space', ''  );

 

위 빨간색 조건문은 안되는지 질문드립니다.(그부분에서 오류가 납니다)

혹시 다른방법이 있는지 알고싶습니다.

감사합니다..

 

 

  • ?
    정만영 2024.09.03 14:12
    CUBRID에서 MERGE 문을 사용할 때 WHEN MATCHED나 WHEN NOT MATCHED 절에 추가적인 조건을 적용할 수 있습니다.
    아래 MERGE 구문은 큐브리드 매뉴얼에 있는 예제입니다, 더 자세한 CUBRID MERGE 구문과 사용 방법은 https://www.cubrid.org/manual/ko/11.3/sql/query/merge.html 참조 하세요.

    -- source_table
    CREATE TABLE source_table (a INT, b INT, c INT);
    INSERT INTO source_table VALUES (1, 1, 1);
    INSERT INTO source_table VALUES (1, 3, 2);
    INSERT INTO source_table VALUES (2, 4, 5);
    INSERT INTO source_table VALUES (3, 1, 3);

    -- target_table
    CREATE TABLE target_table (a INT, b INT, c INT);
    INSERT INTO target_table VALUES (1, 1, 4);
    INSERT INTO target_table VALUES (1, 2, 5);
    INSERT INTO target_table VALUES (1, 3, 2);
    INSERT INTO target_table VALUES (3, 1, 6);
    INSERT INTO target_table VALUES (5, 5, 2);

    MERGE INTO target_table tt USING source_table st
    ON (st.a=tt.a AND st.b=tt.b)
    WHEN MATCHED THEN UPDATE SET tt.c=st.c
    DELETE WHERE tt.c = 1
    WHEN NOT MATCHED THEN INSERT VALUES (st.a, st.b, st.c);

    -- the result of above query
    SELECT * FROM target_table;
  • ?
    대청 2024.09.03 14:24
    답변감사합니다.
    답변주신 내용중에...WHEN MATCHED나 WHEN NOT MATCHED 절에 추가적인 조건을 적용할 수 있습니다....라고 하셨는데
    샘플이나 참조페이지에 가봐도 WHEN MATCHED, WHEN NOT MATCHED 절에 추가적인 조건을 설명한게 없는데요~
    WHEN NOT MATCHED and A.name='홍길동' THEN ---> 이런식으로 조건을 추가하는게 가능하다는 말씀이신가요..
    아니면 다른 방법이 있으신건지요..부탁드립니다..
  • ?
    정만영 2024.09.03 14:43
    원하는 유형의 SQL 구문인지 모르겠으나, 문의하신 내용 기준으로 작성한 MERGE문 입니다.

    MERGE INTO code A
    USING (SELECT 'DAL' AS code, '홍길동' AS name FROM db_root) B
    ON A.code = B.code
    WHEN MATCHED THEN
    UPDATE SET A.name = 'Dal Na La La', A.continent = 'Space Space', A.capital = ''
    WHERE A.name = '홍길동'
    WHEN NOT MATCHED THEN
    INSERT (A.code, A.name, A.continent, A.capital)
    VALUES ('DAL', 'Dal Na La', 'Space', '')
    WHERE B.name = '홍길동'
  • ?
    대청 2024.09.03 14:49
    빠른 답글 감사합니다.
    WHEN NOT MATCHED THEN
    INSERT (A.code, A.name, A.continent, A.capital)
    VALUES ('DAL', 'Dal Na La', 'Space', '')
    WHERE B.name = '홍길동' --> 이렇게 insert문에 where절이 가능한가요?
    제가 뭘 잘못했는지..테스트 해보니 오류가 나네요 ㅠ
  • ?
    정만영 2024.09.03 17:03
    답변 기준으로 확인하고 작성된 SQL 정보입니다.

    1, 스키마 및 데이터 정보
    CREATE TABLE code (
    code CHAR(3),
    name VARCHAR(20),
    continent VARCHAR(20),
    capital VARCHAR(20)
    );
    INSERT INTO code (code, name, continent, capital) VALUES
    ('USA', 'United States', 'North America', 'Washington'),
    ('CAN', 'Canada', 'North America', 'Ottawa'),
    ('MEX', 'Mexico', 'North America', 'Mexico City');

    code name continent capital
    ========================================================================================
    'USA' 'United States' 'North America' 'Washington'
    'CAN' 'Canada' 'North America' 'Ottawa'
    'MEX' 'Mexico' 'North America' 'Mexico City'


    2, WHEN NOT MATCHED THEN --> INSERT 수행 됨
    MERGE INTO code A
    USING (SELECT 'DAL' AS code, '홍길동' AS name FROM db_root) B
    ON A.code = B.code
    WHEN MATCHED THEN
    UPDATE SET A.name = 'Dal Na La La', A.continent = 'Space Space', A.capital = ''
    WHERE A.name = '홍길동'
    WHEN NOT MATCHED THEN
    INSERT (A.code, A.name, A.continent, A.capital)
    VALUES ('DAL', 'Dal Na La', 'Space', '')
    WHERE B.name = '홍길동';

    code name continent capital
    ========================================================================================
    'USA' 'United States' 'North America' 'Washington'
    'CAN' 'Canada' 'North America' 'Ottawa'
    'MEX' 'Mexico' 'North America' 'Mexico City'
    'DAL' 'Dal Na La' 'Space' ''


    3, WHEN MATCHED THEN --> UPDATE ... WHERE A.name = 'Dal Na La' 조건 수행 됨
    MERGE INTO code A
    USING (SELECT 'DAL' AS code, '홍길동' AS name FROM db_root) B
    ON A.code = B.code
    WHEN MATCHED THEN
    UPDATE SET A.name = 'Dal Na La La', A.continent = 'Space Space', A.capital = ''
    WHERE A.name = 'Dal Na La'
    WHEN NOT MATCHED THEN
    INSERT (A.code, A.name, A.continent, A.capital)
    VALUES ('DAL', 'Dal Na La', 'Space', '')
    WHERE B.name = '홍길동';

    code name continent capital
    ========================================================================================
    'USA' 'United States' 'North America' 'Washington'
    'CAN' 'Canada' 'North America' 'Ottawa'
    'MEX' 'Mexico' 'North America' 'Mexico City'
    'DAL' 'Dal Na La La' 'Space Space'
  • ?
    대청 2024.09.04 09:45
    친절한 답변에 감사드립니다.
    덕분에 잘 해결되었습니다.꾸벅^

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 5 admin 2024.04.23 3341
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 7365
» MERGE INTO조건문 질문드립니다. 6 대청 2024.09.03 106
4080 큐브리드 recompile 힌트 질문입니다. 4 초보자 2024.09.02 109
4079 큐브리드 매니저 서버 OOM 관리 방법 문의드립니다. 2 newkr 2024.08.28 116
4078 위의 플랜 조회 추가 질문입니다. 4 초보자 2024.08.28 106
4077 Cubrid Manager Server 관련 OOM이 발생하는 버전 정보를 확인 요청드립니다. 4 newkr 2024.08.27 135
4076 restordb 1 박성호_0403 2024.08.27 110
4075 플랜조회 질문입니다. 4 초보자 2024.08.27 144
4074 replication 질문입니다. 1 초보자 2024.08.23 100
4073 cubrid heartbeat status -v 및 failover 질문입니다. 11 초보자 2024.08.22 141
4072 statdump api 질문 드립니다, 1 ijuru 2024.08.22 96
4071 파이선 드라이버 설치 3 코드보이 2024.08.21 125
4070 DB 용량 확인 쿼리 질문드립니다. 3 shl 2024.08.14 127
4069 Cubrid 사용 도중 한쪽 서버가 다운되어 그 이후 이중화 해제 후 한쪽만 가동중입니다. 3 로키 2024.08.08 142
4068 Dbeaver master, slave 11 초보자 2024.08.08 209
4067 master-slave-replica 구성 4 초보자 2024.08.07 173
4066 Replica 제거방법 3 허니 2024.08.06 126
4065 질의 계획 정보 수집 3 mots 2024.08.06 172
4064 odbc 설치 시 오류입니다. 1 file 푸르름 2024.08.05 107
4063 큐브리드 연결실패 시 횟수 제한 1 배가고파라 2024.08.02 152
4062 실행계획 조회 질문 11시38분 2024.07.30 134
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 206 Next
/ 206

Contact Cubrid

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