2013-12-10 2 views
-2

두 테이블 tt1이 있습니다.MySQL 쿼리 - 새 데이터 삽입

id name a b c o 
1 'John' 1 1 1 23 
2 'John' 6 7 2 23 
3 'John' 9 3 7 23 

내 목적은 : 는 t 내가 다음의 예와 같은 일부 작업 후 테이블 t를 얻기 위해 찾고 다음 데이터

id name a b c o p 
1 'John' 1 1 1 23 5 

t1

id1 a1 b1 c1 o1 
1 6 7 2 23 
2 9 3 7 23 
3 25 7 12 2 

포함되어 있음을 말해 새 열을 t에 삽입하십시오. t1.o1=t.o.

아이디어가 있으십니까? 저장 프로 시저를 사용해야합니까?

+0

테이블 't1'에'o'라는 열이 없습니다. – P5Coder

+0

아래의 SQL을 사용하여 동일한 레코드를 복사 할 수 있습니다 'code'INSERT INTO t SELECT * FROM t1 WHERE t1.o = t.o;
시도해보십시오. 희망이 ... – HackerGK

+0

테이블't'에 대한 정확한 테이블 스키마를 CREATE TABLE ...으로 표시하십시오 – peterm

답변

1

,

insert into t (name,a,b,c,o,p) (select name,a1,b1,c1,o1,p from t1 inner join t on t.o=t1.o1); 

하면 여전히 테이블 t에 열 페이지를 필요로 가정.

http://sqlfiddle.com/#!2/efb65/1

http://sqlfiddle.com/#!2/a97c06/1

그렇지 않으면 삽입 한 후 처음으로 열을 삭제해야 할 것이다 t.id에 자동 증가를 가정 할 수 있으므로 적절하게 대답 업데이트 된 결과 테이블의 순서를 발견 값.

ALTER TABLE t DROP p; 
insert into t (name,a,b,c,o) (select name,a1,b1,c1,o1 from t1 inner join t on t.o=t1.o1); 

http://sqlfiddle.com/#!2/ddccc/1

+0

예를 들어 사용자가 요청한 것에 따르면 ID 열에 중복 값이 ​​없어야하지만 피들에서는 그렇지 않습니다. –

+1

@AlbertoSolano 예 그냥 그 것으로 나타났습니다 대답을 업데이 트 – melc

+0

@ melc 질문에 질문하지 않기 때문에 왜 우리는 p 열의 값을 선택해야합니까? 감사 ! – Christos

0
INSERT INTO tableName 
SELECT t.id, t.name, t.a, t.b, t.c, t.o 
FROM t 
INNER JOIN t1 ON t.o=t1.o1 

tableName은 데이터를 삽입하려는 테이블의 이름입니다. insert into 문 아래의 쿼리는 테이블에 삽입 할 데이터를 선택합니다. 당신은 당신이에서 원하는 데이터를 삽입 할 수 있습니다

INSERT INTO t (id, name, a, b, c, o) 
SELECT t.id, t.name, t.a, t.b, t.c, t.o 
FROM t 
INNER JOIN t1 ON t.o=t1.o1 
+0

tableName = t 인 경우 위 코드를 사용할 수 있습니까? – user3014966

+1

@ user3014966 아니요, 그대로 있으면 약간의 변경이 필요합니다. 해당 코드를 게시하는 데 몇 초만 기다리십시오. – Christos

-1

이 당신에게 MySQL Insert Where query

INSERT INTO t 
SELECT t1.o1 
FROM AnotherTable 
INNER JOIN t on t.o=t1.o1 
+0

다른 열은 어떻습니까? –

2

도움이 될 : 당신이 테이블 t이 값을 삽입해야하는 경우

는, 당신은 다음과 같은 코드를 사용한다 이 코드를 사용하여

INSERT INTO t (name, a, b, c, o) 
SELECT t.name, t1.a1, t1.b1, t1.c1, t1.o1 
FROM t1 
INNER JOIN t on t1.o1 = t.o 

테이블 tid 열에 AUTO_INCREMENT 옵션이 활성화되어 있다고 말하지 않았습니다. 나는이 옵션을 사용한다고 가정한다. 당신은 다음과 같은 작업을 수행 할 수

+0

왜 downvote? –

+0

조금 까다 롭습니다. 't1'에는'id' 칼럼이 없습니다. 두 번째로't'의'id' 컬럼은 중복되지 않는 값을 포함합니다. –

+0

@RavindraGullapalli 음 ... 실수를 수정했습니다. 그래 네가 맞아. 나는 약간의 질문을 검토 할 필요가있다. 감사! –

1

그것은 id 열이 auto_increment 열이 있다고 가정 테이블 t에 대한 정확한 테이블 스키마를 보지 않고 확실히 말할 어렵지만, 그 p 열 수 NULL

INSERT INTO t (name, a, b, c, o) 
SELECT t.name, t1.a1, t1.b1, t1.c1, t1.o1 
    FROM t1 JOIN t 
    ON t1.o1 = t.o; 
입니다

여기에 SQLFiddle 데모

1

이렇게 할 수 있습니다. SQL 피들은 here

SELECT @rownum := 0; 
    INSERT INTO t 
    SELECT t.id+(@rownum := @rownum + 1), t.name, t1.a1, t1.b1, t1.c1, t1.o1, t.p 
    FROM t1 
    INNER JOIN t on t1.o1 = t.o;