2011-08-08 6 views
0

좋아, 제목을 이해하기 어려울 수도 있지만 이것이 내가 원하는 것입니다.업데이트를 사용하여 행을 다른 테이블로 복사

나는 몇 개의 열이있는 테이블 'A'를 가지고 있습니다. 정확한 열이있는 'B'테이블이 있습니다.

내 프로그램이 진행되는 동안 'A'에서 'B'(일종의 임시 캐시)로 몇 줄을 삽입합니다. 'A'의 열 데이터가 변경 될 수 있지만 누군가 '복원'버튼을 클릭하면 'B'의 행을 'A'로 다시 복사하고 복사하려는 행과 동일한 ID로 해당 행을 덮어 쓰려고합니다. '비'.

예. 흐름 동안

Table A: 

1 :  Hi | 
2 :  Friends | 
3 :  What's up 

내가 백업 ID 1 지금

Table B: 

1 :  Hi | 
2 :  Friends 

이 나는 ​​물건 및 테이블 A는,

Table A (changed): 

1 :  Hi diddely doo | 
2 :  Amigo's | 
3 :  What's up 

지금 내 변경이 잘못 실현을 약간 변경 할 및 id 1과 2의 레코드를 테이블 'B'의 원래 상태로 되돌리고 싶습니다.

id가 1을 1로 반입하고 1을 1로 업데이트하지 않고 '단순한'sql이 있습니까?

미리 감사드립니다.

+0

스크립트가이 두 중간에 사망하면 어떻게 될지 생각 했습니까? –

답변

0

당신은 JOIN in UPDATE statements 사용할 수 있습니다

UPDATE ta SET ta.text = tb.text 
INNER JOIN tb ON ta.id = tb.id 

또는 암시 적으로 조인

UPDATE ta, tb SET ta.text = tb.text 
WHERE ta.id = tb.id 

삭제하고 다시 삽입 할 수 있습니다, 당신은 두 테이블이 같은이있는 경우 열을 지정하지 않아도 그런 식으로 테이블 구성표 :

DELETE FROM ta WHERE id IN (SELECT id FROM tb) 

INSERT INTO ta 
SELECT * FROM tb 
+0

글쎄, 그 중 하나는 알고 있지만 열이 많이있을 때 당신은 꽤 SQL 쿼리를 ... 두 테이블에 똑같은 열이있는 경우 '바로 가기'가 있는지 궁금합니다. –

+1

귀하의 질문에 단 하나의 열이 있습니다 그리고 당신은 "그 ID 1을 1 씩 가져 와서 1 씩 업데이트"하고 싶지 않다고 했으므로 나는 당신을 테이블 b에서 ID를 선택하고 별도로 업데이트하는 것으로 가정했습니다. – Jacob

+0

글쎄, 실제로 한 컬럼을 예제로 사용했습니다. 실제로 컬럼을 많이 사용하고 싶습니다. –

관련 문제