终于领略到oracle的强大,可能其他数据库的也可以.标准SQL?
Update ds_wap_query_top_count c
Set active_num = (Select nvl(active_num, 0)
From ds_wap_query_top_temp t
Where t.key_id = c.key_id
and t.channel_id=c.channel_id
and trunc(t.per_date) = to_date('2007-01-23','yyyy-MM-dd')
)
where trunc(c.per_date) = to_date('2007-01-23','yyyy-MM-dd')
;
这个SQL的意思是:
首先它会逐行update ds_wap_query_top_count 表,逐行update前它会对带条件的ds_wap_query_top_temp 进行select 操作,当select的条件符合那行的数据时,就更新那行.有点游标的感觉.