2017-04-03 2 views
-1

내용이있는 세 개의 테이블이 있습니다. 이제 그 테이블을 가져 와서 새 테이블에 추가하려고하지만이 SQL 오류가 발생했습니다. "열 개수가 값 개수와 일치하지 않습니다. 행 1 "세 개의 다른 테이블에서 데이터를 가져 와서 새 테이블에 삽입

여기에 SQL 쿼리입니다. 아래

insert into compare_year(yeara,yearb,yearc,data) 
SELECT yeara 
FROM table_1 
UNION ALL 
SELECT yearb, data 
FROM table_2 
UNION ALL 
SELECT yearc 
FROM table_3 

내가

create table table_1(id int primary key auto_increment,yeara varchar(100)); 
create table table_2(id int primary key auto_increment,yearb varchar(100),data varchar(100)); 

create table table_3(id int primary key auto_increment,yearc varchar(100)); 

나의 새로운 테이블

create table compare_year(id int primary key auto_increment,yeara varchar(100),yearb varchar(100),yearc varchar(100),data varchar(100)) 

누군가가 나를 도울 수 제발 이제 테이블을

을 생성하는 방법이다. 감사합니다

+0

'year *'테이블의 레코드 수가 정확히 같습니까? –

+0

세 테이블의 세 열에서 compare_year 테이블의 한 행으로 이동하는 데이터 간의 관계는 무엇입니까? 여기 논리 란 무엇입니까? – GurV

답변

0

참고 : 선택 쿼리를 결합 할 때 열의 수가 동일해야합니다. 또한 여러 개의 선택 열을 다른 행의 한 행에 삽입 할 수 없습니다.

처럼 내 솔루션이 될 것입니다 : 세 개의 테이블이 동일한 ID를 포함

경우, 당신은 compare_year에이

삽입과 같이 할 수있다 (yeara, yearb, yearc, 데이터) SELECT T1.yeara, T2 .yearb, T3.yearc, 된 table_1의 T1 FROM T2.data 이 T2.Id = T1.Id 에 table_2의 T2에 참여 왼쪽에게 T3.Id = T2.Id

0

그것은 당신이 원하는 모양에 table_3의 T3에 참여 왼쪽 UNION 대신 JOIN입니다. 두 개의 SELECT 문을 결합 할 때는 SELECT의 필드 수가 같아야합니다. 예를 들어,

insert into compare_year(yeara) 
SELECT yeara 
FROM table_1 
UNION ALL 
SELECT yearb AS yeara 
FROM table_2 
UNION ALL 
SELECT yearc AS yeara 
FROM table_3 

은 구문 상 허용됩니다. 테이블을 결합하려는 경우

INSERT INTO compare_year(yeara, yearb, yearc, data) 
SELECT table_1.yeara, table_2.yearb, table_3.yearc, table_2.data 
FROM table_1, table_2, table_3 

그러나이 테이블의 전체 직교 제품이라는 점에 유의하십시오. WHERE 절에 몇 가지 조건문을 원할 가능성이 높습니다. 선택 원인의 순서가 필드 이름이 아닌 INSERT에 중요하다는 점도 유의해야합니다.

관련 문제