2014-03-26 3 views
0

선택 쿼리의 결과 집합을 동일한 테이블의 다른 결과 집합으로 복사 할 수 있습니까?다른 행 결과 세트의 SQL 복사

이 기준은 무엇입니까? 이 작업을 수행하려면 동일한 양의 열과 행이 있어야합니까?

UPDATE t1 
SET t1.source_id = t2.source_id, t1.selected_team_id = t2.selected_team_id, t1.margin = t2.margin 
FROM (
     SELECT tip_id, source_id, selected_team_id, margin, tipper_id 
     FROM tip 
     WHERE tip_id >= 26650287 AND tip_id <= 26650295 
    ) t1, 
    (
     SELECT tip_id, source_id, selected_team_id, margin, tipper_id 
     FROM tip 
     WHERE tip_id >= 26650289 AND tip_id <= 26650299 
    ) t2 

샘플 데이터 :

tip_id  source_id selected_team_id margin tipper_id 
26650287 8   2     0  217630 
26650288 8   11     0  217630 
26650289 8   6     0  217630 
26650290 8   9     0  217630 
26650291 8   1     0  217630 
26650292 8   17     0  217630 
26650293 8   8     0  217630 
26650294 8   4     0  217630 
26650295 8   3     21  217630 
26650296 0   21     0  381719 
26650297 0   20     0  381719 
26650298 0   24     0  381719 
26650299 0   26     0  381719 
+0

당신은 샘플 데이터 및 원하는 결과를 제공 할 수 있습니다를 다음과 같이 작동하는지

는 잘 모르겠어요? 당신이 무엇을하고 싶은지는 다소 불투명합니다. 예를 들어 "업데이트"와 "복사"는 무엇을해야합니까? –

+0

@ GordonLinoff 샘플 데이터로 업데이트했습니다 –

+0

그리고 쿼리에서 무엇을 원합니까? –

답변

0
update t1,(select * from t1 where tip_id >= 26650289 AND tip_id <= 26650299) as t2 
set t1.source_id = t2.source_id, t1.selected_team_id = t2.selected_team_id, t1.margin = t2.margin 
where (t1.tip_id >= 26650287 AND t1.tip_id <= 26650295) and (t1.tip_id + 2 = t2.tip_id) 
+0

왜 tip_id에 2를 더합니까? –

+0

어쩌면 나는 당신의 문제를 잘 이해하지 못한다. 나는 당신이 다음과 같이 업데이트하고 싶다고 생각했다. tip1id의 업데이트 기록은 t2의 기록에 의해 26650287이고 tip_id는 26650289이고 나머지 기록은 이것 하나 업데이트되었다. 어쨌든 , 내가 언급 한 방법으로 테이블을 업데이트한다면 두 테이블 사이의 조인 조건을 지정해야합니다. [t1.tip_id + 2 = t2.tip_id] 또는 다른 것일 수 있습니다. – larry