FORUM

조회 수 857 추천 수 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
    친절한 답변에 감사드립니다.
    덕분에 잘 해결되었습니다.꾸벅^

  1. CUBRID 사용자를 위한 DBeaver 도구 출시 안내

    Date2024.04.23 Byadmin Views14500
    read more
  2. CUBRID Manager Server 업그레이드

    Date2024.09.24 Bymots Views761
    Read More
  3. dblink를 이용한 insert update delete

    Date2024.09.23 Byaustin Views825
    Read More
  4. 큐브리드 9.3.9 에서 큐브리드 11 로 이관하기 위한 절차

    Date2024.09.12 Byjeinhe Views817
    Read More
  5. 큐브리드 down 혹은 start 여부 체크

    Date2024.09.12 By초보자 Views820
    Read More
  6. 단순한 select 가 느린 경우

    Date2024.09.11 By아아아아아아이 Views758
    Read More
  7. 큐브리드 get_mon_statistic api 문의

    Date2024.09.11 Byijuru Views843
    Read More
  8. 큐브리드 매니저 계정 생성 질문입니다.

    Date2024.09.11 By초보자 Views894
    Read More
  9. 큐브리드 유틸리티 혹은 rest api 실행 시 로그 파일 질문입니다.

    Date2024.09.10 By초보자 Views834
    Read More
  10. getbrokersinfo api 결과 값 문의

    Date2024.09.09 Byijuru Views781
    Read More
  11. 큐브리드 마이그레이션 인덱스 문의 드립니다.

    Date2024.09.09 Bysjwz초보쓰 Views845
    Read More
  12. kill transaction 문의드립니다

    Date2024.09.05 By잘했어요 Views854
    Read More
  13. atomikos 관련 문의 드립니다.

    Date2024.09.04 Byxlxm Views841
    Read More
  14. 구축한 db에 backup db 정보를 입력하고 싶습니다.

    Date2024.09.03 By박성호_0403 Views848
    Read More
  15. 큐브리드 getQueryplan() 추가 질문입니다.

    Date2024.09.03 By초보자 Views766
    Read More
  16. rest api token 만료 기준 문의드립니다

    Date2024.09.03 By잘했어요 Views856
    Read More
  17. MERGE INTO조건문 질문드립니다.

    Date2024.09.03 By대청 Views857
    Read More
  18. 큐브리드 recompile 힌트 질문입니다.

    Date2024.09.02 By초보자 Views839
    Read More
  19. 큐브리드 매니저 서버 OOM 관리 방법 문의드립니다.

    Date2024.08.28 Bynewkr Views819
    Read More
  20. 위의 플랜 조회 추가 질문입니다.

    Date2024.08.28 By초보자 Views781
    Read More
  21. Cubrid Manager Server 관련 OOM이 발생하는 버전 정보를 확인 요청드립니다.

    Date2024.08.27 Bynewkr Views839
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 208 Next
/ 208

Contact Cubrid

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

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

나눔고딕 사이트로 가기

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5