MySQL에서 한 테이블에서 다른 새 테이블로 데이터를 복사하는 방법은 무엇입니까?


143

MySQL의 한 테이블에서 다른 테이블로 데이터를 복사하고 싶습니다.

표 1 (기존 테이블) :

aid    
st_id
from_uid
to_gid
to_uid
created
changed
subject
message
link

표 2 (새 테이블)

st_id
uid
changed
status
assign_status

표 1의 일부 데이터 필드를 표 2에 복사하고 싶습니다.

MySQL 쿼리를 사용하여이 작업을 수행 할 수 있습니까?


1
이것은 일회성입니까, 아니면 정기적으로 하시겠습니까?
jdias

@@ jdias : 지금까지 한 번만 일했습니다 ..
Fero

@jdias 명확히하기 위해, 일회성 작업이 아니라면, MySQL 멍청한 놈은 어떻게해야합니까?
Seanny123

1
데이터 중복을 피하기 위해 볼 수 있습니다.
James Bradbury

답변:


280

이것은 당신이 원하는 것을 할 것입니다 :

INSERT INTO table2 (st_id,uid,changed,status,assign_status)
SELECT st_id,from_uid,now(),'Pending','Assigned'
FROM table1

table1의 모든 행을 포함하려는 경우 그렇지 않으면 table1의 서브 세트 만 추가하려는 경우 끝에 WHERE 문을 추가 할 수 있습니다.

이게 도움이 되길 바란다.


이것이 T-SQL에서 익숙했던 것과 동일하다는 점을 기쁘게 생각합니다.
jpierson

1
MySQL을 좋아하는 또 하나의 이유는 매우 직관적입니다!
peceps

당신은 모든 표 데이터를 복사 할 경우 복사 @SANDEEP 전에 새로운 표 2 작성해야합니다
푸네에서 Sachin을

77

필드를 나열하지 않고 테이블 구조가 동일한 경우 다음을 수행 할 수 있습니다.

INSERT INTO `table2` SELECT * FROM `table1`;

또는 동일한 구조로 새 테이블을 만들려는 경우 :

CREATE TABLE new_tbl [AS] SELECT * FROM orig_tbl;

삽입 선택에 대한 참조 ; 테이블 선택 생성을위한 참조


2
[AS]대괄호 안에 왜 , AS여기에 의해 수행
Kasun Siyambalapitiya

3
단어가 선택 사항임을 나타냅니다. 문서에서 복사하여 붙여 넣었 기 때문에 그런 식으로 작성되었습니다. 아무것도 추가하지 않습니다. AS다른 SQL 방언에서는 필수적 이라고 생각합니다 .
Bryan

22

다른 테이블에서 데이터를 쉽게 얻을 수 있습니다. 원하는 필드 만 추가해야합니다.

mysql 쿼리는 다음과 같습니다

INSERT INTO table_name1(fields you want)
  SELECT fields you want FROM table_name2


여기서 값은 table2에서 table1로 복사됩니다.





2
INSERT INTO Table1(Column1,Column2..) SELECT Column1,Column2.. FROM Table2 [WHERE <condition>]

2
이 코드는 질문에 대답 할 수 있지만 문제를 해결하는 방법과 사용 이유를 설명하는 것이 좋습니다. 코드 전용 답변은 장기적으로 유용하지 않습니다.
Tobias Liefke

0

이 코드를 사용해보십시오

insert into #temp 
select Product_ID,Max(Grand_Total) AS 'Sales_Amt', Max(Rec_Amount) ,'',''
from Table_Name group by Id

0

위의 쿼리는 고객의 일치하는 열로 클라이언트 테이블을 만든 경우에만 작동합니다

INSERT INTO clients(c_id,name,address)SELECT c_id,name,address FROM customer

0

먼저 table2를 작성해야합니다.

table2 (field1, field2, ...)에 삽입
field1, field2, ...를 선택하십시오.
table1에서
어디 조건;

0

테이블이 존재하는 경우 table_name에 삽입을 시도 할 수 있습니다. select * from old_tale;

테이블이 존재하지 않는 경우 old_table과 같이 table_name 테이블을 작성해야합니다. table_name에 삽입 select * from old_tale;

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.