2014-03-26 25 views
0

有沒有辦法將結果集從select查詢複製到同一個表中的另一個結果集?來自其他行結果集的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

也許我不明白你的問題,我想你想要更新像這樣:更新t1的記錄,其中tip_id是26650287記錄的t2,其中tip_id是26650289,其餘記錄逐一更新。 反正,如果按照我提到的方式更新表,則必須指定兩個表之間的連接條件,可能是[t1.tip_id + 2 = t2.tip_id]或其他。 – larry