Computer_IT/MySQL
[MySql]Column count doesn't match value count at row 1 에러
RainbowM
2017. 5. 31. 10:13
Select 한 내용을 그대로 Insert 시키는 방법과 약간 응용하는 법을 소개합니다. 처음에는 저도 방법이 정확히 떠오르지 않아 구글링을 했지만 간단명료하게 나와있는 글이 없어 시간을 좀 뺐겼던 기억이 납니다.
1. select 한 내용의 전체 컬럼 Insert
| INSERT INTO [table] SELECT * FROM [table] WHERE [조건]; |
당연한 이야기지만 select하는 테이블과 insert할 테이블의 컬럼은 일치해야 합니다.
2. 원하는 컬럼만 select 해서 Insert
| INSERT INTO [table] (column1, colum2, colum3) SELECT column1, colum2, colum3 FROM [table] WHERE [조건]; |
PRIMARY키가 있어 1번의 방법으로 INSERT가 안되는 경우 PRIMARY키를 제외한 컬럼을 직접 선택해서 INSERT하는 방법입니다.
++
위의 글을 참조한 이유는 잘 동작하던 쿼리문이
UID를 추가한 이후
Column count doesn't match value count at row 1 의 에러 문구가 나왔었다.
실제 소스를 보면서 설명하겠습니다.
insert into HPG
select system, cbroff, consl from CNS
where system = system ;
일 경우 에러가 없던 문구에서
Column (UID)를 추가하였습니다. 했더니 에러 문구가 위의 msgbox로 출력되었습니다.
즉 From table과 Insert Table의 컬럼 수가 일치하지 않다는 것으로 판단됩니다.
따라서, UID는 자동 증가이기 때문에
insert into HPG(system, cbroff, consl)
select system, cbroff, consl from CNS
where system = system ;
를 추가 함으로 써 에러를 수정할 수 있었습니다.