Prre
70
2019-05-07 15:37:24
8
407

mysql 필드값 복사 쿼리 질문입니다.




테이블 구조가 이렇게 되어있고 현재 데이터가 들어가 있는 상태입니다

이중에서 sid 값이 ENG 인 값들을 복사하여 CNA로 변경하고 같은 테이블에 넣으려고 합니다


INSERT INTO m_commoncode(uid,sid,systype,syscode,sysname,sysval1,sysval2,sysval3,syssort,sysyn,sysbigo,wdate) 

(SELECT uid,sid,systype,syscode,sysname,sysval1,sysval2,sysval3,syssort,sysyn,sysbigo,wdate, 

 CASE

 WHEN sid = 'ENG' 

 THEN 'CNA' 

 ELSE sid

 END AS sid

 FROM m_commoncode);

이렇게 쿼리 작성을 해봤는데 

Column count doesn't match value count at row 1


라는 오류가 뜨네요 원인이 무엇일까요..

0
0
  • 답변 8

  • 레버리지
    2k
    2019-05-07 15:48:03

    Column count doesn't match value count at row 1 여기 안에 답이 있네요.

    0
  • 유리세계
    3k
    2019-05-07 15:51:45

    인서트 하겠다고 선언한 컬럼개수랑

    실제 조회한 컬럼개수랑 개수가 틀려서그래요

    조회한것이 1개 sid가 더 많네요


    0
  • Prre
    70
    2019-05-07 16:02:05

    답변 감사합니다!

    0
  • Prre
    70
    2019-05-07 16:04:48
    기존 sid컬럼에 변경해서 추가하려면 쿼리를 어떻게 수정해야 할까요 ㅠ
    0
  • 유리세계
    3k
    2019-05-07 16:06:54

    select 절에  sid 가 두개면 안되는거죠,

    sid 위치에 기존 sid를 넣는게 아니라 변경할 sid를 넣어야죠

    0
  • Prre
    70
    2019-05-07 16:15:11

    아 이해했습니다. 죄송하지만 마지막으로 한가지만 더 질문드려도 될까요?

    조건문에서 원하는건 sid값이 eng인 cna로 변경하여 복사 후 인서트 하고싶은데 

    셀렉트문에선 모든 필드값이 다 나오네요 조건을 어떻게 변경해야 할까요..

    0
  • Prre
    70
    2019-05-07 16:17:32

    아 where문 추가해서 간추렸습니다. 감사합니다!

    0
  • onimusha
    7k
    2019-05-07 16:18:24


    INSERT INTO m_commoncode(uid,sid, ..생략 ... ) 
    SELECT 새uid(키값),'CNA' , ... 생략... 
       FROM m_commoncode
     WHERE sid = 'ENG'


    1
  • 로그인을 하시면 답변을 등록할 수 있습니다.